## Debugging a program

When you define a launch configuration for running a program, you can specify which modes (run and/or debug) your program supports. If you support debug mode, then you need to implement a debug model and UI that allow users to interact with your programs under debug. The core platform debug plug-in provides support for:

- a generic debug model
- debug events and listeners
- breakpoint management
- expression management

The debug UI plug-in provides utility classes for implementing debug user interfaces.

Since it's difficult to discuss generic debugging in any meaningful detail, we'll review the platform debug model and UI classes from the perspective of the Java debugger.