# Debugger: Threads

In general, a thread refers to a unit of concurrent execution within a target. Typically, each thread carries its own execution context, so this window provides a means of navigating those contexts. The window also plots a timeline showing thread lifespans, and displays a caret which can be used to navigate the current point in time. This window, the Stack window, the Model window, and the Dynamic Listing window provide a complete trace navigation system.

## Table Columns

- Name - the name or summary of the thread given by the debugger. If a name is not given, this is just an index or unique id assigned to the thread. This field can be modified, but it has no effect on the target.
- PC - the program counter of the thread. This is typically the address of the next instruction it will execute. If the debugger records frames, this is the PC of the innermost frame.
- Function - the name of the function containing the PC, if Ghidra has the corresponding module image imported, analyzed, and mapped.
- Module - the name of the module containing the PC. This column is hidden by default.
- SP - the stack pointer for the thread. If the debugger records per-frame registers, this is the SP from the innermost frame. This column is hidden by default.
- State - the thread's current state. Depending on what is reported by the debugger, this should be either RUNNING, STOPPED, or TERMINATED. It might also be ALIVE, if the debugger cannot determine whether or not it is running; or UNKNOWN, if the debugger has lost track.
- Plot - a graphical representation of the thread's lifespan. Threads which are alive will appear to extend to the end of time. Unlike other column headers, clicking and dragging in this one may navigate trace snapshots. To rearrange this column, hold SHIFT while dragging.
- Comment - a user-modifiable comment about the thread. This column is hidden by default.
- Path - the path of the thread object in the target's model. This is hidden by default. See the Model window.

## Navigating Threads

Double-clicking a thread in the table will activate that thread, i.e., it becomes the current thread throughout the Debugger UI, usually including the debugger's command-line interface. Notably, the Registers window will display the activated thread's register values. Listing windows with configured location tracking will re-compute that location with the thread's context and navigate to it.