# Debugger: Breakpoint Timeline

The Breakpoint Timeline window provides a visual overview of all snapshots in the current trace, highlighting snapshots where breakpoints were hit. Each cell in the grid represents one or more consecutive snapshots. Cells are ordered left to right, top to bottom starting from the lowest snapshot to the highest. Cells are colored according to the type of breakpoint hit recorded in those snapshots. Clicking a cell navigates to the earliest hit or snapshot in the cell. A click and drag across cells opens another Timeline window zoomed on the selected snapshot range.

Breakpoint hits are detected by examining the trace's recorded data. For execution breakpoints (hardware or software), the plugin searches for stack frames whose program counter falls within the breakpoint's address range. For memory read and write breakpoints, it searches for trace memory references to the breakpoint's address range with the corresponding reference type. The plugin listens for changes to breakpoints and snapshots and updates the display automatically. NOTE: R/W breakpoints are only supported for connectors and/or importers that record memory references to the trace. At this time, that includes only the TENET and TENET++ loaders.

The timeline panel fills the window with a grid of cells. Each cell covers a contiguous range of snapshots. The number of snapshots per cell is determined automatically so that all snapshots from 0 to the maximum snapshot (or from the start to the stop snapshot of a zoomed window) fit within the visible area.

### Cell Colors

Each cell is filled with a color indicating the breakpoint activity in its snapshot range:

- Empty (Background color) - No breakpoint hit was recorded in this range.
- Instruction hit (Red by default) - An execution breakpoint was hit in this range.
- Memory read (Blue by default) - A memory read breakpoint was hit in this range.
- Memory write (Yellow by default) - A memory write breakpoint was hit in this range.
- Multiple hits (Colors of hits are blended) - Multiple breakpoint types were hit in this range.

In addition, three overlay colors indicate interactive state:

- Current snapshot (Green by default) - The cell containing the active snapshot is highlighted.
- Hover (Green by default) - The cell under the mouse cursor is highlighted.
- Selection (Green by default) - Cells covered by an active drag selection are highlighted.

### Tooltips

Hovering over a cell shows a tooltip with:

- The snapshot range covered by the cell (start and end snapshot numbers).
- The snapshot the cell will navigate to when clicked.
- The breakpoint type of the first event in the cell (if any).
- The name of the breakpoint that was hit (if any).

## Navigation and Interaction

### Click to Navigate

Clicking a cell activates the snapshot associated with the first breakpoint hit event in that cell. If the cell contains no breakpoint hit, the first snapshot in the cell's range is activated.

### Click and Drag to Zoom

Clicking and dragging across a range of cells opens a new zoom window focused on the snapshot range covered by the drag selection. The zoom window is a separate Breakpoint Timeline provider showing only the selected sub-range. Zoom windows are trace specific and are hidden when a different trace is activated and restored when the original trace is reactivated.

### Mouse Wheel

Scrolling the mouse wheel over the timeline panel activates the next (wheel down) or previous (wheel up) snapshot.

## Toolbar Actions

### Toggle between Grid and Single Column

Switches the layout between a 2D grid and a single vertical column. In column mode, each cell occupies the full width of the panel and cells are stacked vertically from top (earliest snapshot) to bottom (latest snapshot).

### Toggle Grid Outline

Shows or hides the border drawn around each cell. When the grid outline is enabled, cell boundaries are drawn in the disabled foreground color.

### Zoom In (Increase Cell Size)

Increases the default cell size by one pixel in each dimension. The grid is recalculated after each step.

### Zoom Out (Decrease Cell Size)

Decreases the default cell size by one pixel in each dimension, down to a minimum of one pixel.

### Set Default Cell Size to the Smallest

Sets the default cell size to the minimum (one pixel).

### Close All Zoom Windows

Closes all zoom sub-windows that were created for the current trace. This action has no effect on the main Breakpoint Timeline window itself.

## Context Menu Actions

The Breakpoint Timeline plugin adds context menu actions to the following views: the Static Listing, the Dynamic Listing, the Registers window, and the Byte Viewer. These actions search the current trace for breakpoint hits at the address or address range selected in the active view and navigate to or list the matching snapshots.

The address range used for the search is determined from the current selection in the active view. If there is no selection, the single address at the cursor is used.

Actions are organized into two top-level menu groups:

### Go to...

These actions navigate to a single snapshot. They appear as submenus under Go to..., grouped by search direction:

- First... - Navigate to the earliest snapshot in the entire trace where the selected address was hit.
- Previous... - Navigate to the latest snapshot before the current snapshot where the selected address was hit.
- Next... - Navigate to the earliest snapshot after the current snapshot where the selected address was hit.
- Final... - Navigate to the latest snapshot in the entire trace where the selected address was hit.

Each submenu contains one entry per breakpoint type:

- Execution - Search for execution breakpoint hits at the selected address range.
- Memory Read - Search for memory read breakpoint hits at the selected address range.
- Memory Write - Search for memory write breakpoint hits at the selected address range.
- Memory Access - Search for any memory access (read or write) breakpoint hits at the selected address range.

### Show All...

These actions open a table window listing every snapshot in the trace where the selected address was hit, for the chosen breakpoint type. The table has two columns: Snap (the snapshot number) and Address (the PC when the hit occurred). Double-clicking a row in the table navigates to that snapshot. The same four breakpoint type entries (Execution, Memory Read, Memory Write, Memory Access) are used for this action.