About the Course Andreas Zeller 1 Course Topics • Tracking and Reproducing Problems • The Scientific Method • Making Programs Fail • Isolating Failure Causes (automatically) • Locating and Fixing Defects “Why does my Program Fail?” 2 2 Your Lecturer Andreas Zeller 3 3
Your Tutor Andrzej Wasylkowski 4 4 Course Material • Book “Why programs fail” http://www.whyprogramsfail.com/ • Lecture slides, dates, links… http://www.st.cs.uni-sb.de/edu/ adebug/2008/ 5 5 Course Format • 15 lectures • Four projects (“write your own debugger”) • Oral exams at end of semester 6 6
Four Projects Simplifying Comparing Locating Input Coverage Causes 3 weeks 3 weeks 4 weeks (plus 1 more) written in Python for Python 7 7 <SELECT NAME="op_sys" MULTIPLE SIZE=7> <OPTION VALUE="All">All<OPTION VALUE="Windows 3.1">Windows 3.1<OPTION VALUE="Windows 95">Windows 95<OPTION VALUE="Windows 98">Windows Simplifying Input 98<OPTION VALUE="Windows ME">Windows ME<OPTION VALUE="Windows 2000">Windows 2000<OPTION VALUE="Windows NT">Windows NT<OPTION VALUE="Mac System 7">Mac System 7<OPTION VALUE="Mac System 7.5">Mac System 7.5<OPTION VALUE="Mac System 7.6.1">Mac System 7.6.1<OPTION VALUE="Mac System 8.0">Mac System 8.0<OPTION VALUE="Mac System 8.5">Mac System 8.5<OPTION VALUE="Mac System 8.6">Mac System 8.6<OPTION VALUE="Mac System 9.x">Mac System 9.x<OPTION VALUE="MacOS X">MacOS X<OPTION VALUE="Linux">Linux<OPTION VALUE="BSDI">BSDI<OPTION VALUE="FreeBSD">FreeBSD<OPTION VALUE="NetBSD">NetBSD<OPTION VALUE="OpenBSD">OpenBSD<OPTION VALUE="AIX">AIX<OPTION VALUE="BeOS">BeOS<OPTION VALUE="HP-UX">HP-UX<OPTION What’s relevant in here? VALUE="IRIX">IRIX<OPTION VALUE="Neutrino">Neutrino<OPTION VALUE="OpenVMS">OpenVMS<OPTION VALUE="OS/2">OS/2<OPTION VALUE="OSF/ 1">OSF/1<OPTION VALUE="Solaris">Solaris<OPTION VALUE="SunOS">SunOS<OPTION VALUE="other">other</SELECT> </td> <td align=left valign=top> <SELECT NAME="priority" MULTIPLE SIZE=7> <OPTION VALUE="--">--<OPTION VALUE="P1">P1<OPTION VALUE="P2">P2<OPTION VALUE="P3">P3<OPTION VALUE="P4">P4<OPTION VALUE="P5">P5</SELECT> 8 8 Comparing Coverage sample 9 8 7 $ sample 11 14 $ Output: 7 8 9 Output: 0 11 How do these runs differ? 9 9
Locating Causes if (GET_CODE (XEXP (x, 0)) == PLUS { x = apply_distributive_law (gen_binary (PLUS, mode, gen_binary (MULT, mode, XEXP (XEXP (x, 0), 0), XEXP (x, 1)), What causes the failure? gen_binary (MULT, mode, XEXP (XEXP (x, 0), 1), XEXP (x, 1)))); if (GET_CODE (x) != MULT) return x; } 10 10 Grading Project 1 Project 2 10% Project 3 Project 4 10% Oral Exam 50% 15% 15% 11 11 Assessment 12 12
Exam 13 13 About the Course How Failures Come to be Tracking Problems Making Programs Fail Reproducing Problems Andreas Zeller Andreas Zeller Andreas Zeller Andreas Zeller Andreas Zeller Tracking Origins Simplifying Problems The Scientific Method Deducing Errors Observing Facts Andreas Zeller Andreas Zeller Andreas Zeller Andreas Zeller Andreas Zeller ? Asserting Expectations System Comparing Coverage Detecting Anomalies Assertions Andreas Zeller Andreas Zeller Andreas Zeller Andreas Zeller Isolating Causes and E � ects Isolating Failure Causes Cause-E � ect � Chains Locating Failure Causes Fixing the Defect Andreas Zeller Andreas Zeller Andreas Zeller Andreas Zeller Andreas Zeller 14 14 This work is licensed under the Creative Commons Attribution License. To view a copy of this license, visit http://creativecommons.org/licenses/by/1.0 or send a letter to Creative Commons, 559 Abbott Way, Stanford, California 94305, USA. 15 15
Recommend
More recommend