Published Sep 3, 2019

Episode 101: Andreas Zeller on Debugging

In Episode 101, Andreas Zeller demystifies the art of debugging by exploring the principles of Delta Debugging, the importance of a scientific mindset, and the evolution from traditional to automated techniques, providing invaluable insights into efficient error identification and problem-solving in software development.
Episode Highlights
Software Engineering Radio - the podcast for professional software developers logo

Popular Clips

Episode Highlights

  • Interactive Debugging

    Interactive debugging remains a cornerstone of software development, allowing developers to step through code and identify errors. explains that this process requires a relationship between the source code and the program state visible on the screen, which is crucial for model-driven development 1. However, traditional interactive debugging tools often fall short, as they operate at a low level and lack the ability to reason backwards, which is essential for effective debugging 2.

    Debugging is essentially a search process which makes it different from all other software engineering activities.

    ---

    Zeller emphasizes the need for automation to alleviate the unpredictability and time-consuming nature of debugging 1.

       

    Automating Debugging

    Automation in debugging is transforming how developers approach error detection and correction. highlights delta debugging as a technique that automates tedious tasks by analyzing changes and program states to pinpoint errors 3. This approach leverages historical data, such as bug reports and change histories, to focus on areas with a higher likelihood of errors, thus streamlining the debugging process 3.

    The more tests you have and the more assertions you have in your code, the easier your debugging life will be.

    ---

    Zeller envisions a future where programming environments act as assistants, guiding developers through potential pitfalls and suggesting areas for further testing 4.

       

    Debugging Challenges

    Debugging presents numerous challenges, particularly in managing program states and identifying root causes of failures. discusses the complexity of tracking program states, which involves extracting and comparing states from successful and failing runs to isolate the cause of errors 5. This process can be intricate, as it requires analyzing differences within graph-like structures of program states.

    My idea is that no programmer should get home late because he or she has been debugging.

    ---

    Zeller also notes the limitations of current debugging tools, which often rely on brute force methods that may not scale well for larger problems 6.

Related Episodes