Debugging with Eclipse: A Quick Introduction

From dftwiki3
Revision as of 10:29, 22 October 2014 by Thiebaut (talk | contribs) (Single Step)
Jump to: navigation, search

--D. Thiebaut (talk) 10:44, 22 October 2014 (EDT)



This is a short tutorial on how to get started with the Eclipse Debugger. Mastering the debugger takes time. The purpose of this lab/tutorial is just to show you how to get started.



Getting Started


  • Open Eclipse
  • Create a New Java Class. Call it DebugDemo.
  • Enter this code in it:


// DebugDemo.java
// D. Thiebaut
// CSC212
import java.util.ArrayList;
import java.util.Iterator;

class Pair {
	public String name;
	public int age;
	Pair( String f, int s ) { name=f; age=s; }
	public String toString() { return name+"("+age+") "; }
}

public class DebugDemo {
	
	
	public static void main(String[] args) {
                ArrayList<Pair> A = new ArrayList<Pair>();
		int increment = 3;
		
		A.add( new Pair( "Alice", 10 ) );
		A.add( new Pair( "Bob", 7 ) );
		
		Iterator<Pair> it = A.iterator();
		while ( it.hasNext() ) {
			Pair p = it.next();
			p.age += increment;
		}
		
		for ( int i=0; i<3; i++ ) {
			Pair p = A.get(  i );
			System.out.println( A.get( i ) );
		}
	}

}
  • Run it.
  • Observe what the program does. It simply creates an array of 2 pairs, containing Alice(10) and Bob(7), and modify the age of both by an increment of 3.


Go into Debugging Mode


  • In the Package Explorer tab (left tab), right/control click on DebugDemo and select Debug As and Java Application.
  • The windows will reorganize themselves (if not, see below):


EclipseDebugger1.png


  • If you do not get the window shown above, click on the little "table and plus symbol" in the top right of the window, and pick Debug in the new pop-up window :


EclipseDebugger2.png


  • You can switch back and forth between Java coding and debugging using the Java and Debug buttons in the top right of the Eclipse window.


Getting Ready to Debug


  • One of the best method to start when debugging is to follow this 3-step approach:
  1. Set a breakpoint on a line of code where you want to start observing what your program is doing.
  2. Run your program full speed. As soon as the computer reaches the breakpoint, it will stop (but not exit), and wait for your instructions.
  3. Single-step your program, observing how the different variables and data structures evolve.


Set A Breakpoint


  • We will want to start watching our program from the beginning of main, when the program puts the first pair in the array.
  • Put your cursor in the 17 in the left margin of A.add( new Pair( "Alice", 10 ) );
  • Right/Control click on 17.
  • Select Toggle Breakpoint. A blue dot should appear left of 17.


EclipseDebugger4.png


Run the Program to the Breakpoint


  • Now that you have a breakpoint, you can run the program; it will automatically go through the initialization, and will stop on the breakpoint. It will not execute line 17, though. It will simply break on it.
  • Click on the bug, next to the green circle with white arrow to start debugging the program.



EclipseDebugger5.png


  • Note several new pieces of information that have appeared
  • The top-right tab called Variables shows you the local variables of the block you are in. Note that you see 3 variables, including args, A, and increment, along with their values.
  • The top menu has 2 new active buttons, one for stepping into lines of code, one for stepping over lines of code. The difference is that Step into will take you inside functions that appear in the line of code you're debugging. Step Over will run the functions appearing in the current code line full speed. Most of the time, we want to use Step Over.
  • Step Into an also be activated by the F5 key.
  • Step Over by the F6 key.


Single Step


  • Click Step Over or F6 once.
  • Note that Line 18 is now highlighted. It is the next line Eclipse is ready to execute. It has finished Line 17.
  • Click on the triangle next to the array A in the top right Variables window to open it.
  • Click on the triangle next to elementData to see the elements of A.
  • Click on the triangle nexxt to Element [0].
  • Do you see Alice and her age of 10?
  • You have just verified that Line 17 of your program added (Alice,10) to the array A.


  • Click Step Over one more time. Verify that (Bob, 7) was added to A. Observe that all objects have an id. It makes it easy to identify things such as pairs, or strings.
  • Click Step Over a few times until you reach Line 23. Observe that p points to a pair object, containing Alice first, then Bob (once you have stepped over a few more times).


  • Single step some more until you reach Line 27.
  • Observe that the variable i has appeared in the Variables window (top-right).
  • As you single step some more you will see that p will appear, then disappear, as the loop is progressing. That's the life span of local variables in blocks! Make sure to open-up the p by clicking the triangle next to it, in the Variables window, and see what pair points to.