Whole document tree
4.9 Debugging programs with multiple threadsIn some operating systems, such as HP-UX and Solaris, a single program may have more than one thread of execution. The precise semantics of threads differ from one operating system to another, but in general the threads of a single program are akin to multiple processes--except that they share one address space (that is, they can all examine and modify the same variables). On the other hand, each thread has its own registers and execution stack, and perhaps private memory. GDB provides these facilities for debugging multi-thread programs:
Warning: These facilities are not yet available on every GDB configuration where the operating system supports threads. If your GDB does not support threads, these commands have no effect. For example, a system without thread support shows no output from `info threads', and always rejects the The GDB thread debugging facility allows you to observe all threads while your program runs--but whenever GDB takes control, one thread in particular is always the focus of debugging. This thread is called the current thread. Debugging commands show program information from the perspective of the current thread. Whenever GDB detects a new thread in your program, it displays the target system's identification for the thread with a message in the form `[New systag]'. systag is a thread identifier whose form varies depending on the particular system. For example, on LynxOS, you might see
when GDB notices a new thread. In contrast, on an SGI system, the systag is simply something like `process 368', with no further qualifier. For debugging purposes, GDB associates its own thread number--always a single integer--with each thread in your program.
On HP-UX systems: For debugging purposes, GDB associates its own thread number--a small integer assigned in thread-creation order--with each thread in your program. Whenever GDB detects a new thread in your program, it displays both GDB's thread number and the target system's identification for the thread with a message in the form `[New systag]'. systag is a thread identifier whose form varies depending on the particular system. For example, on HP-UX, you see
when GDB notices a new thread.
Whenever GDB stops your program, due to a breakpoint or a signal, it automatically selects the thread where that breakpoint or signal happened. GDB alerts you to the context switch with a message of the form `[Switching to systag]' to identify the thread. See section Stopping and starting multi-thread programs, for more information about how GDB behaves when you stop and start programs with multiple threads. See section Setting watchpoints, for information about watchpoints in programs with multiple threads.
This document was generated by root on January, 30 2002 using texi2html |