如何在GDB中调试多线程代码?

时间:2012-11-05 16:08:55

标签: multithreading debugging gdb

我正在尝试使用一个等待用户输入的线程来调试多线程程序。当我在其他线程的某个函数上放置一个断点并运行app时,它会切换到相同的断点,然后立即在输入线程,所以app等待用户的输入,我不能在gdb中执行任何命令。我只需要在调用相同的函数之前看到所有堆栈。我无法在

中制作bt命令

2 个答案:

答案 0 :(得分:1)

thread apply all bt会回答您的问题吗?

答案 1 :(得分:1)

您可以向断点添加命令,请参阅the manual。像这样:

(gdb) break some_func
Breakpoint 2 at ...
(gdb) commands 2
Type commands for breakpoint(s) 2, one per line.
End with a line saying just "end".
>thread apply all bt full
>end
(gdb) cont
Continuing.
Breakpoint 2, ...
Thread 1 (Thread 0x....
...

编辑0:

哦,我猜你得gdb打印这个:

---Type <return> to continue, or q <return> to quit---

在执行run之前,请执行以下操作(您也可以将其粘贴到.gdbinit文件中):

(gdb) set pagination off