-
タイトル:
Overview of Course - Software Debugging
-
概説:
-
My name is Andreas Zeller. I'm a researcher at Saarland University in Germany.
-
And I am researching large programs and why they fail.
-
I have done some fail work in automatic debugging, also in mining the histories of programs.
-
I've been working with companies such as Microsoft, SAP, or Google,
-
examined their bugs, finding out what was wrong, and it struck me
-
that there's almost no teaching material available on debugging and how to debug programs.
-
So today, I'm going start with you a course on how to do debugging systematically,
-
effectively, and in many cases, even automatically--enjoy.
-
Welcome to the Udacity course on debugging.
-
The aim of this course is to teach a systematic approach to debugging
-
and we're even going to explore a number of automatic tools that do the debugging for you.
-
We're going to explore how debuggers work.
-
In particular, the scientific method of debugging by which
-
through a series of experiments we gradually refine a hypothesis
-
until we end up with a diagnosis on why the program failed.
-
On top of that, we're going to build our own interactive debugger in Python.
-
In the next unit, I'm going to introduce you to one of the most
-
powerful debugging tools ever invented, that is assertions.
-
Assertions are statements in the program that automatically check
-
whether the state of the program is still correct.
-
That is, while you're program is executing, the computer constantly monitors
-
the program on whether a bug has occurred.
-
This allows you to very quickly and effectively find out where a bug was first introduced.
-
On top of that, we're going to build a tool that makes you infer assertions from executions.
-
In unit 3, I'm going to show you a technique named delta debugging
-
which automatically simplifies problems.
-
For instance, here's this 900-line HTML file which causes to crash in a program which processes it.
-
With delta debugging, you can reduce this to just the eight characters
-
that produce the bug just as well and all of this automatically.
-
In the next unit, I'm going to show you how to find out where a specific failure came from.
-
You see an execution as a series of states.
-
We are going to explore techniques that help you in tracking
-
the way of an error all through the program execution.
-
And on top of that, we're going to build a tool that isolates such cause effect chamge automatically.
-
In unit 5, we've been looking at reproducing failures.
-
We're going to look at all the various input sources for your program
-
and discuss how to capture and replay them such that you can faithfully
-
reproduce a failure that happens in the field.
-
Plus, we're going to explore statistical debugging which collects data from the field
-
to tell you which parts of your program are most likely to be related to the failure.
-
In unit 6, we're going to see how to mine information
-
from bug data bases and change data bases in order to figure out
-
where bugs have been in your program in the past, where they accumulate,
-
and which parts of your program therefore are going to be the most back prone in the future.
-
And again this is a fully automatic technique.
-
This is so far, you've had no fun in debugging because it just sucks the life out of you.
-
The aim of this course is to get most of the debugging effort off your shoulders
-
because you can have the computer take care of most of the debugging work.
-
So your mind is free for doing something more creative than debugging.