gdb does
pdb does not
pdb is a forward only debugger. Once a statement runs, its side-effects (e.g. variable changes, I/O etc.) are permanent unless you restart.
I Bless Thy Debugger My Child
The Debugger class in System.Diagnostics is implemented in Debugger.cs. Its purpose is to allow communication with the debugger.
This is the class that lets you do a "hard debug" but typing Debugger.Break(), which signals a breakpoint to an attached debugger.
Debugger.Launch() is similarly aggresive. It launches and attaches to a debugger to the process.
This is journalled here. The goal is to understand how LLMs actually work internally.