Por defecto, el BGF detiene todas las discusiones cuando se golpea cualquier punto de interrupción, y se reanuda la todos los hilos cuando se emite un comando (como continue
, next
, step
, finish
, etc.), que requiere que el proceso inferior (la uno que está depurando) comienzan a ejecutarse.
Sin embargo, se puede decir BGF no hacer eso:
(gdb) help set scheduler-locking
Set mode for locking scheduler during execution.
off == no locking (threads may preempt at any time)
on == full locking (no thread except the current thread may run)
step == scheduler locked during every single-step operation.
In this mode, no other thread may run during a step command.
Other threads may run while stepping over a function call ('next').
así que es conveniente establecer puntos de interrupción, entonces set scheduler-locking on
, entonces continue
o finish
en hilo de 1 (rosca 2 está siendo detenido), entonces Ctrl-C para recuperar el control de GDB, cambiar a rosca 2, continue
(hilo 1 está todavía parado), etc.
Cuidado: configurando scheduler-locking on
es muy fácil de hacer que el proceso de inferior a la auto-bloqueo.
Consulte la página de manual de GDB en [Programas de depuración con varios hilos] (http://sourceware.org/gdb/current/onlinedocs/gdb/Threads.html#Threads), específicamente, usted quiere usar el comando 'thread' para cambiar el hilo activo – Hasturkun