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. This paper 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.

Note: By clicking on the above link, this paper will be emailed to your EE Times log-in address by Mentor Graphics.