# Debugger: Breakpoints in the Listings

For a description of how breakpoints are managed logically in Ghidra, please read about the Breakpoints window. Each individual breakpoint location is placed in its respective listing. By default, disabled breakpoints are not readily visible in the dynamic listing. Breakpoints are best controlled using the static program listing, where they are stored as bookmarks. When this plugin is active, additional actions are available for managing those bookmarks and their mapped breakpoints on target, when applicable. The actions in the listing manipulate the logical breakpoint as a whole, not just the individual location. Furthermore, depending on the target, locations' states may be bound to others' via a common breakpoint specification.

## Actions

The following actions are added to all listings by the breakpoint marker plugin. They allow the placement and toggling of breakpoints by address, kind, and length. To set breakpoints on arbitrary expressions, use the Set Breakpoint action of the Commands and Objects window.

### Toggle Breakpoint (K)

This action is always available, and it is suitable for almost all cases. If there is a breakpoint at the cursor, this simply toggles its state. If there is no breakpoint at the cursor, this will prompt to set one, giving a reasonable set of default parameters based on the context at the cursor. At an instruction, it will prefer to set a Software Execution breakpoint. At defined data, it will prefer to set a Read/Write breakpoint of the size of data. At undefined data, or if the target does not support the suggested default, the default kind is left unselected. Please use one of the Set Breakpoint actions to force specific commands. Please beware: the default parameters are not always acceptable to the connected debugger.

### Set Breakpoint

This action is available on the dynamic listing when the target supports at least one breakpoint kind. This menu is always available on the static listing. It displays set breakpoint actions for each reasonable combination of kinds supported by the target. In the static listing, all reasonable combinations are available, regardless of target support; however, only those kinds supported by the target will be included in the resulting command. NOTE: Breakpoints in the static listing can only be mapped to targets which are recorded into a trace. Selecting one of the actions will display a prompt allowing adjustments to the parameters before issuing the command.

- Address - the starting address of the breakpoint. It defaults to the starting address of the instruction or data at the cursor.
- Length - the length in bytes of the breakpoint. Some debuggers for some kinds of breakpoints may not allow a value other than 1. For execution breakpoints, this defaults to 1; for access breakpoints, this defaults to the size of the data at the cursor.
- Kinds - the kind(s) of breakpoint. Only the reasonable combinations are presented, but the user may type any desired combination. A connected debugger may not support the desired combination.

### Enable Breakpoint

This action is available when there is at least one disabled breakpoint at the cursor. It enables those logical breakpoints.

### Disable Breakpoint

This action is available when there is at least one enabled breakpoint at the cursor. It disables those logical breakpoints.

### Clear (Delete) Breakpoint

This action is available when there is at least one breakpoint (in any state) at the cursor. It deletes those logical breakpoints.

## Tool Options: Colors

The background coloring of enabled and disabled, effective and ineffective breakpoints can be configured in the tool's options. By default, enabled breakpoints are colored a desaturated red, ineffective breakpoints are colored grey, and disabled breakpoints have no background at all.