Non-stop multi-threaded debugging in GDB

Version 1

    When debugging a multi-threaded program, should a debugger stop all  threads when any thread stops, or should it stop only those threads that  have something to report, like a breakpoint hit? When debugging a live  system, the latter approach may be less intrusive, as threads other than  those under inspection can continue to respond to external events. We  have implemented this behavior, which we call non-stop debugging, in the  GNU Debugger, GDB. We have adapted GDB’s control commands, strengthened  GDB’s event loop, extended GDB’s remote protocol, and implemented new  techniques for inserting, removing, and stepping past breakpoints.

     

    This project lifts long-standing restrictions in GDB’s thread  support, using a number of interesting techniques. It opens a way to  supporting multi-process and multi-core debugging.