The most recent versions of GDB have started to introduce the concept of asynchronous debugging. This is primarily for use with targets capable of "non-stop" execution. Such targets are able to stop the execution of a single thread in a multithreaded environment, allowing it to be debugged while others continue to execute.
This still represents technology under development. In GDB 6.8, the commands target async and target extended-async were provided to specify remote debugging of a non-stop target in asynchronous fashion.
The mechanism will change in the future, with GDB flags set to specify asynchronous interpretation of commands, which are otherwise unchanged. Readers particularly interested in this area should look at the current development version of GDB and the discussions in the various GDB newsgroups.
Asynchronous debugging requires that the target support packets specifying execution of particular threads. The most significant of these are:
H. To specify which thread a subsequent command should apply to.
q (various packets). The query packets related to threads, qC, qfThreadInfo, qsThreadInfo, qGetTLSAddr and qThreadExtraInfo will need to be implemented.
T. To report if a particular thread is alive.
vCont. To specify step or continue actions specific to one or more threads.
In addition, non-stop targets should also support the T response to continue or step commands, so that status of individual threads can be reported.