English 字幕

← Overview of Course - Software Debugging


Showing Revision 3 created 05/24/2016 by Udacity Robot.

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