Skip to content
Łukasz Klich edited this page Jul 27, 2015 · 16 revisions

Debugging

Description

To provide debugging support emacs-eclim uses jdb, gud and eclim. For now support is very basic and it’s limited to debugging test files or attaching debugger to already running process. For each debugging session eclim will set sourcepath with all dependencies that are present in workspace. Stepping through code will show on side buffer with code loaded in the corresponding line. While debugging you can use standard jdb commands. For this consult help in console itself which will yield all available options. In addition to jdb commands to control debug flow you can use gud commands as well. gud commands can be used from debug console or directly from sourcecode of the application. There are two additional advantages that gud commands have over standard jdb:

  • you can use gud commands to control other debuggers as well e.g. gdb
  • you can bind keys to call gud commands

Installation

jdb is distributed with Oracle jdk so installation of jdb is the same as for jdk. gud is distributed with emacs.

GUD console window

Usage

Right after debugger have started you can already interact with it without executing debugged program. This is right moment to call help and see what options are available in jdb. Basic commands that will get you started:

run
to run program
stop at fully.qualified.name.of.Class:line
to set breakpoint on line
stop in fully.qualified.name.of.Class.methodName
to set breakpoint for method
locals
to show local variables
next
step one line
cont
continue executing the program
list
print current place in sources

Additionally gud provides set of functions that can be called in standard emacs way by M-x or from menu.

Key-bindings

Key Binding Description
C-c C-r Continue
C-c C-n Next
C-c C-s Step into
C-c C-f Finish function
C-c C-p Print expression
C-c C-> Down stack
C-c C-< Up stack
C-c C-b Set breakpoint
C-c C-d Remove breakpoint

Java-mode

Starting debug session

Currently there are just two different functions to start debug session.

eclim-debug-attach
will read project for current buffer and identify all present dependencies in workspace and attach debugger to currently running process on port defined by user.
eclim-debug-test
will try to recognize what kind of test framework is used and act accordingly. Currently best supported test framework is junit. testng support is possible for maven projects.

Key bindings

Key Binding Description
C-c C-e p t Debug current test file
C-c C-e p a Attach debugger to process

Controlling flow

Every command for gud can be called only after gud console have started. Commands used here are the same as in gud console window the only difference is additional C-x as a prefix.

Key bindings

Key Binding Description
C-x C-c C-r Continue
C-x C-c C-n Next
C-x C-c C-s Step into
C-x C-c C-f Finish function
C-x C-c C-p Print expression
C-x C-c C-> Down stack
C-x C-c C-< Up stack
C-x C-c C-b Set breakpoint
C-x C-c C-d Remove breakpoint