c - 不停止 gdb 中的所有线程

标签 c gdb pthreads

如果到达断点(或在 GDB shell 中按下 Ctrl+C),GDB 通常会停止所有线程。我知道存在诸如 scheduler-locking 和 schedule-multiple 之类的命令,但我认为不可能让已定义的线程在后台运行,同时调试另一个线程。

最佳答案

如果您的目标支持异步模式,您可以使用set target-async on 启用异步模式。然后,您可以使用命令指定后台执行。例如,

continue&

可用于运行单线程,并且

interrupt [-a]

暂停单个线程或整个程序的执行。

结合不间断模式,您可以检查单个线程,而其他线程继续在后台运行:

 # If using the CLI, pagination breaks non-stop.
 set pagination off

 # Finally, turn it on!
 set non-stop on
 # Before debugging is started!

关于c - 不停止 gdb 中的所有线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3666331/

相关文章:

c - 在 gdb 中包含 malloc.c 的源代码?

c - pthread编程,线程不会同时运行

c - pthread_create 的正确参数是什么

c - 为什么我的 C 程序会产生奇怪的 printf 输出?

c - 使用分区和交换按字母顺序排序

gdb - 有没有办法让 gdb 在每次启动时重复相同的指令?

c - 我无法理解 gdb 的输出

c - 为什么我需要设置比实际大小更大的堆栈大小?

c - 使用 XOR 按位运算执行逐字节比较

c - Erlang nif不升级