Debugging

Summer Semester 2014

Armin Biere, Martina Seidl

News

Source code of JNuke.

Motivation

Everybody understands that producing working computer systems requires testing. However, testing is only usefull as long bugs are detected. After a bug has been detected its root cause has to be found and fixed. Analysing the root cause of a failure is the task of debugging.

We argue that beside proper testing, mastering the art of debugging can increase productivity considerably. In this lecture we revisit common testing techniques and explain novel debugging techniques.

Resources

We highly recommend the book by Andreas Zeller: Why Programs fail: A guide to systematic debugging. Andreas Zeller. Morgan Kaufmann, second edition 2009.

Source code of JNuke including the testing framework described in the following paper.

C. Artho, A. Biere, S. Honiden, V. Schuppan, P. Eugster, M. Baur, B. Zweimüller, P. Farkas. Advanced Unit Testing - How to Scale Up a Unit Test Framework. In Proc. Workshop on Automation of Software Test (AST'06), Shanghai, China, May 2006.

V. Schuppan, M. Baur, A. Biere. VM Independent Replay in Java. In Proc. 4th Intl. Workshop on Runtime Verification (RV'04), Electronic Notes in Theoretical Computer Science (ENTCS), vol. 113, Elsevier 2005.

Some tools and papers from our group on fuzzing and delta debugging.

Slides

We are mainly using the official slides provided by Andreas Zeller.

Here you find three additional slide sets:

profiling

multi-threaded debugging

debugging with ScalaCheck Some Examples