GDB多线程调试如何与Linux线程调度坐标



当使用GDB调试多线程时,可以做

1. switching between existing thread
2. step debugging 
3. etc.

同时,由Linux内核控制和控制OS资源的过程及其线程作为OS资源。当GDB从另一个(T2(切换到线程(例如T1(时,它如何与内核协调,因为内核可能仍希望在一段时间内运行T2。同样,当GDB步骤在一个特定线程中调试(通过发布" SI"命令(时,在此期间如何运行(或完全暂停(?

当GDB从另一个(T2(切换到线程(例如T1(时,它如何与内核协调,因为内核可能仍希望在一段时间内运行T2。

默认情况下,GDB在全停模式下运行。这意味着每当您看到(gdb)提示符时,所有线程都会停止。在2个停止线程之间切换不需要与内核进行任何协调,因为内核不会运行不可运行(停止(线程。

在不间断的模式下,除电流以外的线程以外的线程,并且内核可以并且将安排它们在认为合适的情况下运行。

当GDB步骤在一个特定线程中调试(通过发出" SI"命令(时,其他线程如何在此期间运行(或完全暂停(?

当您stepstepi时,默认情况下所有线程将恢复。您可以用set scheduler-locking on控制此操作,在这种情况下,只有单线将恢复。如果您忘记将Scheduler-Locking off 和do continue,则只会恢复当前线程,这可能会使您感到困惑。

文档。

最新更新