Skip to content

Threads

The Threads panel lists every thread the adapter reports. Ctrl+T opens it; by default it sits in the left column at full height.

Selecting a thread

Move the cursor with J / K and press Enter to select. Unlike the Call Stack, the cursor and the selection are separate here — you can look through the list without switching the debugger's attention.

Selecting a thread re-points the Call Stack at that thread, and through it Variables and Evaluate. Stepping applies to the selected thread.

What the list means per language

The panel shows what the adapter reports, and adapters differ:

Language What you see
Rust, C/C++ OS threads, including runtime threads you did not create
Go goroutines, which can number in the thousands
Python Python threads; debugpy reports them per interpreter thread
PHP a single thread — DBGp has no concept of several

For Go this list is the main tool for a deadlock: a goroutine stuck on a channel shows exactly which one, and its stack says on what.

Single-threaded programs

Many programs have one thread, and then this panel has one row that never changes. It is a fair candidate for removal from the layout:

[ui.layout]
top_left = []

See Configuration → UI — remember that clearing a zone requires naming it explicitly, since an unnamed zone keeps its default contents.