gdb 在特定线程中禁用断点

igo*_*sol 6 gdb breakpoints conditional-breakpoint

是否可以在每个线程的基础上禁用 gdb 断点?

我有一个断点,在后台工作线程中每 100 毫秒触发一次。但我需要在任何其他线程中调试相同的位置。因此,仅在后台工作线程中禁用断点会很酷。是否可以?

当我知道线程号时,也许我可以通过向此断点添加一些特制的条件来禁用线程?

Tom*_*mey 6

Gdb 提供了两个方便的变量$_thread$_gthread(后者相当新),可以在条件中使用它们来引用当前线程。

因此,一旦工作线程启动,您就可以使用info thread它来查找其编号。然后您可以更改断点(假设本例中是断点 2),如下所示:

(gdb) cond 2 $_thread != 57
Run Code Online (Sandbox Code Playgroud)