<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Yngui</id>
	<title>Expertiza_Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.expertiza.ncsu.edu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Yngui"/>
	<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=Special:Contributions/Yngui"/>
	<updated>2026-07-21T15:54:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22472</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22472"/>
		<updated>2009-09-29T16:26:59Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Tarantula */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.  Delta Debugging is an example of algorithm that helps narrow down the fault location.  While Visual Interactive Debugging Aids (VIDA) is an example of debugger tools that utilize breakpoint function and bring it to a whole new level.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugger tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer &amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;. VIDA is implemented as an Eclipse plug-in, which deals with Java programs with JUnit test cases.  It provides a program outline to record the debugging history and provides a static dependency graph to help the programmer make estimation at breakpoints.&lt;br /&gt;
&lt;br /&gt;
==Debugger and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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. A nice tutorial for Java debugging with Eclipse can be found [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
NetBeans, owned by Sun Microsystems, 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++.&lt;br /&gt;
&lt;br /&gt;
===Tarantula===&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
Debugging process in the commercial software development requires more than just a nice debugger.  The process often times involves a collaborative effort from a team of programmers and testers.  Fortunately, IDEs like Eclipse and NetBeans provide a wide array of plug-ins that can help with the collaboration work.  Developers using Eclipse have over 50 [http://en.wikipedia.org/wiki/List_of_Eclipse-based_software choices of plug-ins] that they can use to extend the Eclipse platform.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] ''VIDA: Visual Interactive Debugging.'' Hao et al. [http://www.cs.uoregon.edu/events/icse2009/home/ ''IEEE 31st International Conference on Software Engineering'']. Vancouver, Canada, May 2009.&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22471</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22471"/>
		<updated>2009-09-29T16:26:29Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* NetBeans */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.  Delta Debugging is an example of algorithm that helps narrow down the fault location.  While Visual Interactive Debugging Aids (VIDA) is an example of debugger tools that utilize breakpoint function and bring it to a whole new level.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugger tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer &amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;. VIDA is implemented as an Eclipse plug-in, which deals with Java programs with JUnit test cases.  It provides a program outline to record the debugging history and provides a static dependency graph to help the programmer make estimation at breakpoints.&lt;br /&gt;
&lt;br /&gt;
==Debugger and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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. A nice tutorial for Java debugging with Eclipse can be found [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
NetBeans, owned by Sun Microsystems, 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++.&lt;br /&gt;
&lt;br /&gt;
===Tarantula===&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
Debugging process in the commercial software development requires more than just a nice debugger.  The process often times involves a collaborative effort from a team of programmers and testers.  Fortunately, IDEs like Eclipse and NetBeans provide a wide array of plug-ins that can help with the collaboration work.  Developers using Eclipse have over 50 [http://en.wikipedia.org/wiki/List_of_Eclipse-based_software choices of plug-ins] that they can use to extend the Eclipse platform.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] ''VIDA: Visual Interactive Debugging.'' Hao et al. [http://www.cs.uoregon.edu/events/icse2009/home/ ''IEEE 31st International Conference on Software Engineering'']. Vancouver, Canada, May 2009.&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22470</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22470"/>
		<updated>2009-09-29T16:19:56Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Debugging in Commercial Software Development */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.  Delta Debugging is an example of algorithm that helps narrow down the fault location.  While Visual Interactive Debugging Aids (VIDA) is an example of debugger tools that utilize breakpoint function and bring it to a whole new level.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugger tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer &amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;. VIDA is implemented as an Eclipse plug-in, which deals with Java programs with JUnit test cases.  It provides a program outline to record the debugging history and provides a static dependency graph to help the programmer make estimation at breakpoints.&lt;br /&gt;
&lt;br /&gt;
==Debugger and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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. A nice tutorial for Java debugging with Eclipse can be found [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Tarantula===&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
Debugging process in the commercial software development requires more than just a nice debugger.  The process often times involves a collaborative effort from a team of programmers and testers.  Fortunately, IDEs like Eclipse and NetBeans provide a wide array of plug-ins that can help with the collaboration work.  Developers using Eclipse have over 50 [http://en.wikipedia.org/wiki/List_of_Eclipse-based_software choices of plug-ins] that they can use to extend the Eclipse platform.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] ''VIDA: Visual Interactive Debugging.'' Hao et al. [http://www.cs.uoregon.edu/events/icse2009/home/ ''IEEE 31st International Conference on Software Engineering'']. Vancouver, Canada, May 2009.&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22469</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22469"/>
		<updated>2009-09-29T15:29:12Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Debugger and The Open-Source Community */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.  Delta Debugging is an example of algorithm that helps narrow down the fault location.  While Visual Interactive Debugging Aids (VIDA) is an example of debugger tools that utilize breakpoint function and bring it to a whole new level.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugger tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer &amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;. VIDA is implemented as an Eclipse plug-in, which deals with Java programs with JUnit test cases.  It provides a program outline to record the debugging history and provides a static dependency graph to help the programmer make estimation at breakpoints.&lt;br /&gt;
&lt;br /&gt;
==Debugger and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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. A nice tutorial for Java debugging with Eclipse can be found [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Tarantula===&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] ''VIDA: Visual Interactive Debugging.'' Hao et al. [http://www.cs.uoregon.edu/events/icse2009/home/ ''IEEE 31st International Conference on Software Engineering'']. Vancouver, Canada, May 2009.&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22468</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22468"/>
		<updated>2009-09-29T15:28:45Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Debugger and The Open-Source Community */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.  Delta Debugging is an example of algorithm that helps narrow down the fault location.  While Visual Interactive Debugging Aids (VIDA) is an example of debugger tools that utilize breakpoint function and bring it to a whole new level.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugger tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer &amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;. VIDA is implemented as an Eclipse plug-in, which deals with Java programs with JUnit test cases.  It provides a program outline to record the debugging history and provides a static dependency graph to help the programmer make estimation at breakpoints.&lt;br /&gt;
&lt;br /&gt;
==Debugger and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Tarantula===&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] ''VIDA: Visual Interactive Debugging.'' Hao et al. [http://www.cs.uoregon.edu/events/icse2009/home/ ''IEEE 31st International Conference on Software Engineering'']. Vancouver, Canada, May 2009.&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22467</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22467"/>
		<updated>2009-09-29T15:25:47Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Debugging and The Open-Source Community */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.  Delta Debugging is an example of algorithm that helps narrow down the fault location.  While Visual Interactive Debugging Aids (VIDA) is an example of debugger tools that utilize breakpoint function and bring it to a whole new level.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugger tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer &amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;. VIDA is implemented as an Eclipse plug-in, which deals with Java programs with JUnit test cases.  It provides a program outline to record the debugging history and provides a static dependency graph to help the programmer make estimation at breakpoints.&lt;br /&gt;
&lt;br /&gt;
==Debugger and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] ''VIDA: Visual Interactive Debugging.'' Hao et al. [http://www.cs.uoregon.edu/events/icse2009/home/ ''IEEE 31st International Conference on Software Engineering'']. Vancouver, Canada, May 2009.&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22466</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22466"/>
		<updated>2009-09-29T15:24:36Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Visual Interactive Debugging Aids (VIDA) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.  Delta Debugging is an example of algorithm that helps narrow down the fault location.  While Visual Interactive Debugging Aids (VIDA) is an example of debugger tools that utilize breakpoint function and bring it to a whole new level.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugger tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer &amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;. VIDA is implemented as an Eclipse plug-in, which deals with Java programs with JUnit test cases.  It provides a program outline to record the debugging history and provides a static dependency graph to help the programmer make estimation at breakpoints.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] ''VIDA: Visual Interactive Debugging.'' Hao et al. [http://www.cs.uoregon.edu/events/icse2009/home/ ''IEEE 31st International Conference on Software Engineering'']. Vancouver, Canada, May 2009.&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22465</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22465"/>
		<updated>2009-09-29T15:19:48Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Visual Interactive Debugging Aids (VIDA) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.  Delta Debugging is an example of algorithm that helps narrow down the fault location.  While Visual Interactive Debugging Aids (VIDA) is an example of debugger tools that utilize breakpoint function and bring it to a whole new level.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugger tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer &amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] ''VIDA: Visual Interactive Debugging.'' Hao et al. [http://www.cs.uoregon.edu/events/icse2009/home/ ''IEEE 31st International Conference on Software Engineering'']. Vancouver, Canada, May 2009.&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22464</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22464"/>
		<updated>2009-09-29T15:19:16Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.  Delta Debugging is an example of algorithm that helps narrow down the fault location.  While Visual Interactive Debugging Aids (VIDA) is an example of debugger tools that utilize breakpoint function and bring it to a whole new level.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugger tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] ''VIDA: Visual Interactive Debugging.'' Hao et al. [http://www.cs.uoregon.edu/events/icse2009/home/ ''IEEE 31st International Conference on Software Engineering'']. Vancouver, Canada, May 2009.&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22463</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22463"/>
		<updated>2009-09-29T15:19:04Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.  Delta Debugging is an example of algorithm that helps narrow down the fault location.  While Visual Interactive Debugging Aids (VIDA) is an example of debugger tools that utilize breakpoint function and bring it to a whole new level.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugger tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] ''VIDA: Visual Interactive Debugging.'' Hao et al. [http://www.cs.uoregon.edu/events/icse2009/home/ ''IEEE 31st International Conference on Software Engineering'']. Vancouver, Canada, May 2009&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22462</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22462"/>
		<updated>2009-09-29T15:08:31Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Fault Localization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.  Delta Debugging is an example of algorithm that helps narrow down the fault location.  While Visual Interactive Debugging Aids (VIDA) is an example of debugger tools that utilize breakpoint function and bring it to a whole new level.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugger tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22461</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22461"/>
		<updated>2009-09-29T15:03:18Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22460</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22460"/>
		<updated>2009-09-29T15:03:06Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Whyline */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] http://www.cs.cmu.edu/~NatProg/whyline.html&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22459</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22459"/>
		<updated>2009-09-29T14:59:37Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Fault Localization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.&lt;br /&gt;
&lt;br /&gt;
====Delta Debugging====&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
====Whyline====&lt;br /&gt;
[http://www.cs.cmu.edu/~NatProg/whyline.html Whyline] is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Visual Interactive Debugging Aids (VIDA)====&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] http://www.cs.cmu.edu/~NatProg/whyline.html&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22458</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22458"/>
		<updated>2009-09-29T14:56:02Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Fault Localization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.&lt;br /&gt;
&lt;br /&gt;
* '''Delta Debugging'''&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
* '''Whyline'''&lt;br /&gt;
[http://www.cs.cmu.edu/~NatProg/whyline.html Whyline] is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&amp;lt;sup&amp;gt;[3]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Visual Interactive Debugging Aids (VIDA)'''&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] http://www.cs.cmu.edu/~NatProg/whyline.html&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22457</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22457"/>
		<updated>2009-09-29T14:55:39Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.&lt;br /&gt;
&lt;br /&gt;
* '''Delta Debugging'''&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
* '''Whyline'''&lt;br /&gt;
[http://www.cs.cmu.edu/~NatProg/whyline.html Whyline] is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
* '''Visual Interactive Debugging Aids (VIDA)'''&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;br /&gt;
&lt;br /&gt;
[3] http://www.cs.cmu.edu/~NatProg/whyline.html&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22456</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22456"/>
		<updated>2009-09-29T14:54:49Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Fault Localization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.&lt;br /&gt;
&lt;br /&gt;
* '''Delta Debugging'''&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
* '''Whyline'''&lt;br /&gt;
[http://www.cs.cmu.edu/~NatProg/whyline.html Whyline] is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
* '''Visual Interactive Debugging Aids (VIDA)'''&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22455</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22455"/>
		<updated>2009-09-29T14:51:55Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Debugging Steps */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There are various research topics focused on debugging algorithm and tools that implement or enhance the algorithms.&lt;br /&gt;
&lt;br /&gt;
* '''Delta Debugging'''&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
* '''Whyline'''&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
* '''Visual Interactive Debugging Aids (VIDA)'''&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22454</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22454"/>
		<updated>2009-09-29T14:41:42Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Fault Localization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22453</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22453"/>
		<updated>2009-09-29T14:40:08Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Fault Localization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eclipse has these advanced features built-in to help with debugging:&lt;br /&gt;
* '''Breakpoint''' - You can set a breakpoint at any lines of the code. When you run the code in the Debug mode, the code will stop executing when it hits the breakpoint.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22452</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22452"/>
		<updated>2009-09-29T14:39:39Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eclipse has these advanced features built-in to help with debugging:&lt;br /&gt;
* '''Breakpoint''' - You can set a breakpoint at any lines of the code. When you run the code in the Debug mode, the code will stop executing when it hits the breakpoint.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22451</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22451"/>
		<updated>2009-09-29T14:39:29Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eclipse has these advanced features built-in to help with debugging:&lt;br /&gt;
* '''Breakpoint''' - You can set a breakpoint at any lines of the code. When you run the code in the Debug mode, the code will stop executing when it hits the breakpoint.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;br /&gt;
[2] [http://www.ibm.com/developerworks/library/os-ecbug/ Debugging with the Eclipse Platform]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22450</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22450"/>
		<updated>2009-09-29T14:38:23Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Fault Localization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&amp;lt;sup&amp;gt;[2]&amp;lt;/sup&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eclipse has these advanced features built-in to help with debugging:&lt;br /&gt;
* '''Breakpoint''' - You can set a breakpoint at any lines of the code. When you run the code in the Debug mode, the code will stop executing when it hits the breakpoint.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22449</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22449"/>
		<updated>2009-09-29T14:37:22Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Fault Localization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&lt;br /&gt;
&lt;br /&gt;
Eclipse has these advanced features built-in to help with debugging:&lt;br /&gt;
* '''Breakpoint''' - You can set a breakpoint at any lines of the code. When you run the code in the Debug mode, the code will stop executing when it hits the breakpoint.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22448</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22448"/>
		<updated>2009-09-29T14:37:13Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Fault Localization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
The Eclipse Platform provides a built-in Java language debugger with standard debugging functionality, including the ability to perform step execution, to set breakpoints and values, to inspect variables and values, and to suspend and resume threads. It can also be used to debug applications running on a remote machine.&lt;br /&gt;
&lt;br /&gt;
Eclipse has these advanced features built-in to help with debugging:&lt;br /&gt;
* '''Breakpoint''' - You can set a breakpoint at any lines of the code. When you run the code in the Debug mode, the code will stop executing when it hits the breakpoint.  &lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22447</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22447"/>
		<updated>2009-09-29T14:27:42Z</updated>

		<summary type="html">&lt;p&gt;Yngui: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Debugging Steps==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
===Failure Detection===&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools, such as Eclipse, usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
Below is the list of debugging features built into Eclipse:&lt;br /&gt;
* Breakpoint - You can set a breakpoint at any lines of the code. When you run the code on the Debug mode, it will hold the execution when it hits the breakpoint. &lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22446</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22446"/>
		<updated>2009-09-29T14:26:07Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Failure Detection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes and packages, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools, such as Eclipse, usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
Below is the list of debugging features built into Eclipse:&lt;br /&gt;
* Breakpoint - You can set a breakpoint at any lines of the code. When you run the code on the Debug mode, it will hold the execution when it hits the breakpoint. &lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22445</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22445"/>
		<updated>2009-09-29T14:25:02Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools, such as Eclipse, usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
Below is the list of debugging features built into Eclipse:&lt;br /&gt;
* Breakpoint - You can set a breakpoint at any lines of the code. When you run the code on the Debug mode, it will hold the execution when it hits the breakpoint. &lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22444</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22444"/>
		<updated>2009-09-29T14:24:43Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also widely used by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools, such as Eclipse, usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
Below is the list of debugging features built into Eclipse:&lt;br /&gt;
* Breakpoint - You can set a breakpoint at any lines of the code. When you run the code on the Debug mode, it will hold the execution when it hits the breakpoint. &lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22443</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22443"/>
		<updated>2009-09-29T14:24:18Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://en.wikipedia.org/wiki/Eclipse_%28software%29 Eclipse] and [http://en.wikipedia.org/wiki/NetBeans NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools, such as Eclipse, usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
Below is the list of debugging features built into Eclipse:&lt;br /&gt;
* Breakpoint - You can set a breakpoint at any lines of the code. When you run the code on the Debug mode, it will hold the execution when it hits the breakpoint. &lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22442</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22442"/>
		<updated>2009-09-29T14:22:27Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools, such as Eclipse, usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
Below is the list of debugging features built into Eclipse:&lt;br /&gt;
* Breakpoint - You can set a breakpoint at any lines of the code. When you run the code on the Debug mode, it will hold the execution when it hits the breakpoint. &lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22427</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22427"/>
		<updated>2009-09-29T05:31:28Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Fault Localization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
Fault localization is a time consuming work.  Debugger tools, such as Eclipse, usually come with advanced debugging features that help programmers trace through the code and find the exact location of the fault.  &lt;br /&gt;
&lt;br /&gt;
Below is the list of debugging features built into Eclipse:&lt;br /&gt;
* Breakpoint - You can set a breakpoint at any lines of the code. When you run the code on the Debug mode, it will hold the execution when it hits the breakpoint. &lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22414</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22414"/>
		<updated>2009-09-29T03:37:20Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Failure Detection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function failed.  The next step is to locate the exact statement or logic that caused the failures.&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22413</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22413"/>
		<updated>2009-09-29T03:35:09Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into these three steps&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function that was failing.  The next step is to locate the exact position of the fault.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22412</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22412"/>
		<updated>2009-09-29T03:34:09Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, starting from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into three steps of:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function that was failing.  The next step is to locate the exact position of the fault.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22410</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22410"/>
		<updated>2009-09-29T03:29:26Z</updated>

		<summary type="html">&lt;p&gt;Yngui: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into three steps of:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function that was failing.  The next step is to locate the exact position of the fault.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22391</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22391"/>
		<updated>2009-09-29T02:41:36Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Academic Literature on Debugging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into three steps of:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault&lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function that was failing.  The next step is to locate the exact position of the fault.&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22390</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22390"/>
		<updated>2009-09-29T02:41:00Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Failure Detection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into three steps of:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault  &lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
&lt;br /&gt;
From the results printed in the console window, we can evaluate whether the code is doing what it supposed to do or not.  However, when the complexity of the code is growing and you need to work with multiple classes, it will be more convenient to automate the testing process.  Automation tools such as [http://en.wikipedia.org/wiki/JUnit JUnit] comes in handy and provides programmers with information on which class or function that was failing.  The next step is to locate the exact position of the fault.&lt;br /&gt;
&lt;br /&gt;
==Fault Localization==&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22382</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22382"/>
		<updated>2009-09-29T02:30:12Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Academic Literature on Debugging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into three steps of:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault  &lt;br /&gt;
&lt;br /&gt;
==Failure Detection==&lt;br /&gt;
Failure detection occurs during software testing.  Failure is first detected when program fails to run or does not pass the unit tests.  The process of finding the failures started as simple as implementing the print line command such as below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 int i = 5;&lt;br /&gt;
 int j = 3;&lt;br /&gt;
 int k = i+j;&lt;br /&gt;
&lt;br /&gt;
 System.out.println(&amp;quot;i is &amp;quot; + i);     &lt;br /&gt;
 System.out.println(&amp;quot;j is &amp;quot; + j);&lt;br /&gt;
 System.out.println(&amp;quot;i+j is &amp;quot; + k); &lt;br /&gt;
&amp;lt;/pre&amp;gt;      &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22378</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22378"/>
		<updated>2009-09-29T02:15:04Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Academic Literature on Debugging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Debugging process is divided into three steps of:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault  &lt;br /&gt;
&lt;br /&gt;
Researchers have been finding ways to increase the productivity of debugging process, from finding an algorithm to creating a tool that implements existing or new debugging techniques.  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22376</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22376"/>
		<updated>2009-09-29T02:14:03Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Academic Literature on Debugging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Debugging process consists of:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault.  &lt;br /&gt;
&lt;br /&gt;
Researchers have been finding ways to increase the productivity of debugging process, from finding an algorithm to creating a tool that implements existing or new debugging techniques.  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22375</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22375"/>
		<updated>2009-09-29T02:13:41Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Academic Literature on Debugging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Researchers have been finding ways to increase the productivity of debugging process, from finding an algorithm to creating a tool that implements existing or new debugging techniques.  &lt;br /&gt;
&lt;br /&gt;
Debugging process consists of:&lt;br /&gt;
* Detecting failure&lt;br /&gt;
* Localizing fault&lt;br /&gt;
* Correcting fault.  &lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22373</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22373"/>
		<updated>2009-09-29T02:11:45Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, from beginners to professionals, are probably [http://www.eclipse.org Eclipse] and [http://www.netbeans.org NetBeans] [http://en.wikipedia.org/wiki/Integrated_development_environment IDE].  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Researchers have been finding ways to increase the productivity of debugging process, from finding an algorithm to creating a tool that implements existing or new debugging techniques.  Some of the most popular techniques in debugging are Delta Debugging and Fault Localization.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22370</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22370"/>
		<updated>2009-09-29T02:09:56Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Since debugging process often performed at the very end of [http://en.wikipedia.org/wiki/Systems_Development_Life_Cycle software development life cycle], the cost of fixing bugs are higher.  Finding the cause of bugs within the code with complex architecture could be difficult, slow, tedious, and sometimes frustrating.  Researchers have been finding ways to increase the efficiency of debugging process, thus reducing the time required for the process.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely.  Many of the most popular and widely used debugging tools are available for free and developed as open source projects.  The most popular tools used by programmers, from beginners to professionals, are probably Eclipse and NetBeans IDE.  These IDEs are not only used by individual developers, but also by developers working on commercial products.&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Researchers have been finding ways to increase the productivity of debugging process, from finding an algorithm to creating a tool that implements existing or new debugging techniques.  Some of the most popular techniques in debugging are Delta Debugging and Fault Localization.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22362</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22362"/>
		<updated>2009-09-29T01:57:08Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Debugging Debugging] has been an important part of software development life cycle ever since the first computer program being introduced.  Programmers often find the process of finding bugs in their code to be a difficult, slow, tedious, and even frustrating.  During the last decade, debugging techniques and tools have advanced immensely. The most popular tools used by programmers, from beginners to professionals, are probably Eclipse and NetBeans IDE. Both of these tools gained more popularity and success when they became an open-source project, with individuals and companies contributing to the project.&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Researchers have been finding ways to increase the productivity of debugging process, from finding an algorithm to creating a tool that implements existing or new debugging techniques.  Some of the most popular techniques in debugging are Delta Debugging and Fault Localization.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22360</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22360"/>
		<updated>2009-09-29T01:49:52Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Debugging has been an important part of software development life cycle ever since the first computer program being introduced.  Programmers often find the process of finding bugs in their code to be a difficult, slow, tedious, and even frustrating.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely. The most popular tools used by programmers, from beginners to professionals, are probably Eclipse and NetBeans IDE. Both of these tools gained more popularity and success when they became an open-source project, with individuals and companies contributing to the project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Researchers have been finding ways to increase the productivity of debugging process, from finding an algorithm to creating a tool that implements existing or new debugging techniques.  Some of the most popular techniques in debugging are Delta Debugging and Fault Localization.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging by Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22358</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22358"/>
		<updated>2009-09-29T01:49:23Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Debugging has been an important part of software development life cycle ever since the first computer program being introduced.  Programmers often find the process of finding bugs in their code to be a difficult, slow, tedious, and even frustrating.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely. The most popular tools used by programmers, from beginners to professionals, are probably Eclipse and NetBeans IDE. Both of these tools gained more popularity and success when they became an open-source project, with individuals and companies contributing to the project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Researchers have been finding ways to increase the productivity of debugging process, from finding an algorithm to creating a tool that implements existing or new debugging techniques.  Some of the most popular techniques in debugging are Delta Debugging and Fault Localization.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.linux.com/archive/feature/46108 An Introduction to Delta Debugging, Alessandro Giusti]&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22353</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22353"/>
		<updated>2009-09-29T01:47:22Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Debugging has been an important part of software development life cycle ever since the first computer program being introduced.  Programmers often find the process of finding bugs in their code to be a difficult, slow, tedious, and even frustrating.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely. The most popular tools used by programmers, from beginners to professionals, are probably Eclipse and NetBeans IDE. Both of these tools gained more popularity and success when they became an open-source project, with individuals and companies contributing to the project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Researchers have been finding ways to increase the productivity of debugging process, from finding an algorithm to creating a tool that implements existing or new debugging techniques.  Some of the most popular techniques in debugging are Delta Debugging and Fault Localization.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.st.cs.uni-saarland.de/dd/ Why Programs Fail: A Guide to Systematic Debugging, Morgan Kaufmann], ISBN 1-55860-866-4&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22352</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22352"/>
		<updated>2009-09-29T01:45:43Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Delta Debugging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Debugging has been an important part of software development life cycle ever since the first computer program being introduced.  Programmers often find the process of finding bugs in their code to be a difficult, slow, tedious, and even frustrating.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely. The most popular tools used by programmers, from beginners to professionals, are probably Eclipse and NetBeans IDE. Both of these tools gained more popularity and success when they became an open-source project, with individuals and companies contributing to the project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Researchers have been finding ways to increase the productivity of debugging process, from finding an algorithm to creating a tool that implements existing or new debugging techniques.  Some of the most popular techniques in debugging are Delta Debugging and Fault Localization.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Delta_Debugging Delta Debugging], developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.st.cs.uni-sb.de/zeller/ Andreas Zeller]: &amp;lt;cite&amp;gt;Why Programs Fail: A Guide to Systematic Debugging&amp;lt;/cite&amp;gt;, Morgan Kaufmann, ISBN 1-55860-866-4&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
	<entry>
		<id>https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22350</id>
		<title>CSC/ECE 517 Fall 2009/wiki1b 1 ch</title>
		<link rel="alternate" type="text/html" href="https://wiki.expertiza.ncsu.edu/index.php?title=CSC/ECE_517_Fall_2009/wiki1b_1_ch&amp;diff=22350"/>
		<updated>2009-09-29T01:45:03Z</updated>

		<summary type="html">&lt;p&gt;Yngui: /* Delta Debugging */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Advances in Debugging'''&lt;br /&gt;
&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
Debugging has been an important part of software development life cycle ever since the first computer program being introduced.  Programmers often find the process of finding bugs in their code to be a difficult, slow, tedious, and even frustrating.  &lt;br /&gt;
&lt;br /&gt;
During the last decade, debugging techniques and tools have advanced immensely. The most popular tools used by programmers, from beginners to professionals, are probably Eclipse and NetBeans IDE. Both of these tools gained more popularity and success when they became an open-source project, with individuals and companies contributing to the project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Academic Literature on Debugging==&lt;br /&gt;
&lt;br /&gt;
Researchers have been finding ways to increase the productivity of debugging process, from finding an algorithm to creating a tool that implements existing or new debugging techniques.  Some of the most popular techniques in debugging are Delta Debugging and Fault Localization.&lt;br /&gt;
&lt;br /&gt;
===Delta Debugging===&lt;br /&gt;
Delta Debugging, developed by Professor [http://www.st.cs.uni-sb.de/zeller/ 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.&amp;lt;sup&amp;gt;[1]&amp;lt;/sup&amp;gt; The algorithm isolates the difference between the passing and failing test case hence simplifies the number of test cases needed.&lt;br /&gt;
&lt;br /&gt;
Delta Debugging can be applied to isolate the cause of these different applications:&lt;br /&gt;
* Failure-inducing input &lt;br /&gt;
* Failure-inducing changes (adding / updating / deleting variables, functions, classes, etc.) &lt;br /&gt;
* Failure-inducing states (key presses, button presses, mouse clicks, etc.)&lt;br /&gt;
&lt;br /&gt;
===Fault Localization===&lt;br /&gt;
&lt;br /&gt;
===Whyline===&lt;br /&gt;
Whyline is an interactive debugging tool which is designed to help programmers locating the fault by allowing them to ask questions along the source code based on their dependency.&lt;br /&gt;
&lt;br /&gt;
===Visual Interactive Debugging Aids (VIDA)===&lt;br /&gt;
Visual Interactive Debugging Aids (VIDA) is a debugging tool which continuously recommends breakpoints for the programmer based on the analysis of execution information and the gathered feedback from the programmer.&lt;br /&gt;
&lt;br /&gt;
==Debugging and The Open-Source Community==&lt;br /&gt;
&lt;br /&gt;
There are a lot of open source debugger tools that have become popular among professional developers.  They range from stand alone applications to Integrated Development Environment (IDE).  They provide many choices for developers to choose whether they want tools for specific languages, operating systems, algorithms, optional plug-ins, etc.  Two of the most popular IDEs that are widely used are Eclipse and NetBeans.  Both tools are open source, easy to use, and provide cross-platform environment.  &lt;br /&gt;
&lt;br /&gt;
===Eclipse===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
===NetBeans===&lt;br /&gt;
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++.&lt;br /&gt;
&lt;br /&gt;
===Debugging in Eclipse and NetBeans===&lt;br /&gt;
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 [http://www.vogella.de/articles/EclipseDebugging/article.html here].&lt;br /&gt;
&lt;br /&gt;
===Advanced Debugging Tools===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tarantula====&lt;br /&gt;
Tarantula is a visualization system that displays the results of running suites of tests against software systems. By showing what portions of the code are executed by passed and failed tests, the system helps people identify faults in their programs. (http://pleuma.cc.gatech.edu/aristotle/Tools/tarantula/)  Tarantula automates the time-consuming debugging process of stepping through the code and verifying the values at each step.  It visualizes the suspicions of statements by different colors, ranging from red, yellow, to green.  The statements that are suspicious will be marked with red color, whereas the innocent statements marked by green color.&lt;br /&gt;
&lt;br /&gt;
(Insert example screenshot)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Debugging in Commercial Software Development==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
[1] [http://www.st.cs.uni-sb.de/zeller/ Andreas Zeller]: &amp;lt;cite&amp;gt;Why Programs Fail: A Guide to Systematic Debugging&amp;lt;/cite&amp;gt;, Morgan Kaufmann, ISBN 1-55860-866-4&lt;/div&gt;</summary>
		<author><name>Yngui</name></author>
	</entry>
</feed>