How to debug java with eclipse

Debugging – the technique one uses most and is inevitable. If only there was a tool that allowed us to make this sometimes-tedious task much easier and not-so-tedious… oh wait. There is.

java-featured-image

Eclipse allows to start a Java programin in the so-called Debug mode. What it is most useful for is that it allows you to control the execution flow by using debug comamnds.

You can set line breakpoints, conditional breakpoints and/or exception breakpoints.

Starting the debugging process

To initialize a breakpoint in your code, right click on the left margin in the Java Editor and select Toggle Breakpoint, like so:
Setting a breakpoint in java using debugger

What you can also do is (which is slightly quicker way, I guess) to double click on the left margin again (where the Red Arrow is pointing at). Whichever works for you, they are quite the same ways.

In my case, I added a breakpoint at the beggining of my for loop:
Setting a Breakpoint at For Loop

Now it is time to run the program in Debug mode. There are 3 ways of doing it:

  • Click the “Run” command in main menu and then select “Debug”
  • Press F11
  • Click on the bug-like icon that is on the top panel and select “Debug As Java Application”

Debug As

Please note, to debug the program, you need to have defined breakpoints.

Confirming Debug As

This screen will be prompted after you have selected “Java application” from the picture above this one. Click OK.

Confirm Perspective Switch

This window will be invoked because Eclipse wants to know if you want to switch to Debug perspective once a stop point has been reached. Click on “Switch”.

Controlling the debugging process

You will find buttons on the top panel whose purpose is to help you control the execution of the program you decided to debug.

toolbar menu debugger

However, you can also use key bindings that are as follows:
Resume toolbar button : what this button does is resume the execution of the program until it reaches the next breakpoint (F8)

Terminate toolbar button: terminates the current running server, not eclipse (CTRL + F2)

F5 toolbar menu : executes the currently highlighted line and jumps over the next one. It is important to note that if the currently highlighted line is a function call, the debugger will step into the function (F5)




F6 toolbar menu : executes a method without the debugger actually stepping into it, also called a “step over” (F6)

F7 toolbar menu : finishes the execution of the current method and jumps back to the caller of the method (F7)

Debug view

Debug view

Variables & Expression view
Variables view

Expression view

These views provide a showcase of the declared variables and their associated values.

Breakpoint View

Breakpoints view

It basically does what its name is – displays all the breakpoints. In my case, I only have 1 breakpoint which happens to be on line 6.

Console view

Console View

With this view you are probably already familiar with – this is the actual output of the program.

Simple example using these views

Starting from line 6 in the code above (from the for loop), after clicking F5, we get this result:

Step 1

So, after clicking F5, we get into the loop (line 7) and if you look at the Variables view, you will see that ‘i’ has been initialized to 0 (line 6).

Now, let’s click on F5 again.

Step 2 debugger process

Nothing has changed, because we added 1 to exampleVariable, but that’s it. Now that we are on line 8, let’s click on F5 and see what happens.

Step 3 debugger process

We got out first output! And that is because we ran the System.out.println() statement. What do you think is going to happen now when I press F5?

Step 4 debugger process

If you said ‘i’ would change to 1 then you would have been right! You can see on the right that ‘i’ got highlighted as it changed its value.

That is the basic process of debugging.

Let’s look at some more functionality that Eclipse’s Debugger tool provides us with.

Watchpoints

Unlike breakpoints, watchpoints are used to stop the execution of an apllication whenever the value of a filed changes (without specifying it was going to).

You can easily enable Watchpoints by specifying that in the Breakpoint Properties. To access Breakpoint properties, right click on the breakpoint you have put on the left of the code and select “Breakpoint Properties”, like so:
Breakpoint properties

Then you have a couple of options. You can tick “Conditional” and then select “Suspend when ‘true'” or “Suspend when value changes”. Even more, you can specify a certain condition in the space below that if it evaluates to true, it will suspend the termination.

Suspend when 'true'

These are called “Condition breakpoints”.

Leave a Reply

avatar