CSC/ECE 517 Fall 2009/wiki1b 1 ch

From Expertiza_Wiki
Revision as of 19:15, 22 September 2009 by Yngui (talk | contribs) (→‎References)
Jump to navigation Jump to search

Debuggers have been around for at least 35 years, but the debuggers in NetBeans and Eclipse took debugging to a new level by integrating it with a large number of facilities for writing code. Describe the advances in debugging during this decade, taking into account (i) the academic literature, (ii) debugging in commercial development environments, and (iii) debugging and open source.

Background

Debugging is a process of finding and fixing defects in program code. Debugger is a software tool used by software developers to find and eliminate bugs. They allow the developers to examine the code in details, run through them line by line, checking variables' value at a specific point, etc. Debugging tools, such as Eclipse and NetBeans, have have become more sophisticated over the past decade. These IDEs are not only equipped with build in capabilities for debugging, but also serve as platforms for plug-in tools that extend their capabilities.

Tools

Eclipse

IBM developed Eclipse in the late 1990s and turned it over in 2001 to the nonprofit Eclipse Foundation. It became an open-source platform which enabled anyone to build applications using the technology. Eclipse is a popular choice, especially among Java developers, and often compared to NetBeans.

NetBeans

NetBeans is an open-source IDE developed in Java using the NetBeans Platform. NetBeans offer bundles for specific development needs, such as Java EE, Ruby, PHP, and C/C++.

Debugging in Eclipse and NetBeans

Eclipse and NetBeans come with debugging facilities, such as running and stopping the program, setting up breakpoints, keeping track of variables' value, watchpoint, hit count, etc. A nice tutorial for Java debugging with Eclipse can be found here.

Debugging Methods

Delta Debugging

Delta Debugging, developed by Professor Andreas Zeller's group at Saarland University in Germany, is an automatic and systematic technique that deals with isolation of the source of the failure -- often the developer's longest, most demotivating, and most repetitive activity when carried out manually.<ref>http://www.linux.com/archive/feature/46108</ref> The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.

Delta Debugging can be applied to isolate the cause of these different applications:

  • Failure-inducing input
  • Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.)
  • Failure-inducing states (key presses, button presses, mouse clicks, etc.)

See Also

Notes

References

Further Reading

  • Andreas Zeller: Why Programs Fail: A Guide to Systematic Debugging, Morgan Kaufmann, 2005. ISBN 1-55860-866-4