Debugging

Debuggers are special modules that attach to existing code units. They do not produce additional units; instead, they provide specialized actions, accessible graphically via the Debugger menu in the RCP client.

The following picture shows two debugger units connected to an Android app.

Note to developers: debugger modules offer a rich API. UI clients can only reflect those functionality partly. Visit the Resources sub-section for more information on how to use the debuggers API to perform advanced dynamic analysis of applications.

Availability

Currently, JEB ships with debuggers for:

As of JEB 2.3.0, only Android applications (bytecode and native code) have debugging support.

Note: Additional debuggers will be released with JEB 2.3.x maintenance updates, including support for Windows and Linux executables debugging.

Attaching to a Target

One or more debugger unit(s) will be created, depending on your target application.

Views

The RCP client will also open automatically open views that represent the debugger units. Those views are:

You may want to switch to a custom layout to better accommodate those additional views. The above pictures shows an on-going debugging session of an Android app. A custom layout is used:

A breakpoint can also be seen, as well as the about-to-be-executed line of code.

Basic Commands

The basic commands are accessible from the Debugger menu.

The live values of variables and registers can also be examining by hovering over an item representing them.

More: a detailed overview of basic debugging capabilities, specifically for Android app debugging, can be found on our blog.

Advanced Commands

Advanced debugging commands can be used via the Console view. This view is linked to command interpreters offered by the currently focused unit. Debuggers offer command interpreter to perform advanced tasks such as:

The screenshot below shows the expanded Console view with an interpreter connected to the Dalvik Bytecode debugger:

More: a detailed overview of the interpreters' features can be found on our blog.

Resources

Also consult the Reference API Documentation.