Thursday, February 6, 2014

How to Debug Eclipse Based Application

There are at least two way to do it:
  1. Run your eclipse application from your eclipse development environment in debug mode
  2. Attach to running eclipse application using Eclipse remote debugger 


Run your eclipse application from your eclipse development environment in debug mode


For this option you need to have all sources imported in eclipse development environment and compiled without errors. Then you can just create Eclipse Application launch configuration and run it in debug mode. If for some reason it is not possible, you still can debug your application with second option.


Attach to running eclipse application using Eclipse remote debugger


Using this approach you need to start your eclipse app with remote debugger enabled. Add in your eclipse application ini file following lines in -vmargs part
-Xdebug
-Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=y
So you would have something like this (note last two lines)
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.100.v20110505
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-XX:MaxPermSize=512m
-Xms1024m
-Xmx2048m
-Xdebug
-Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=y
Now you can start custom eclipse. You won't see anything because it would be in debug mode and wait until remote debugger is attached. When console output shows the message
...
Listening for transport dt_socket at address: 8001
It is time to start remote debugger session in eclipse development environment.
Import source code you want to debug into development workspace. Make sure you use source code eclipse application was built from or line numbers won't match in debug. There is no need to have source compiled without errors because your application is already running.
Select Project->Debug Configurations ... form bar menu and create new Remote Java Application configuration with name you want and configure port as 8001 (see options in ini file above). Do not forget to visit Source tab and add all projects with sources you need during debug session.
Run it ignoring a warning about compilation errors and you should see eclipse splash form your eclipse application started before. After that you can use debugger as usual.

Conclusion


Both options require to have configured development environment in Eclipse, I prefer to use option (2) because it doesn't require to have everything compiled without problems in eclipse workspace. You always can start from what you really interested in and then add missing sources into development environment in the middle of debugging session.