使用 gdb/dbx 调试线程进程

Posted

技术标签:

【中文标题】使用 gdb/dbx 调试线程进程【英文标题】:debugging a thread process using gdb/dbx 【发布时间】:2009-11-05 04:40:43 【问题描述】:

这可能是一个真实的问题,但我在这里问是因为当我在面试中被问到这个问题时我没有任何线索。

我们如何调试由另一个线程创建的线程? 假设有一个主进程,它调用函数 pthread_create 来创建一个不可连接的线程进程,这意味着主进程和新创建的线程进程都将执行它们自己的任务,如果我们开始调试程序怎么能我们导航到创建的线程?。

提前致谢。

【问题讨论】:

【参考方案1】:

您可以将 gdb 附加到整个进程,然后使用 gdb 的thread ops 在线程之间导航。在 pthread_create'ing 要调试的线程时打印线程 id 可能会有所帮助。

【讨论】:

+1。我可能会很懒,只是在设置进程运行之前在线程的入口点设置一个断点。我想这种方法只有在您已经知道问题在线程中的位置时才有帮助。

以上是关于使用 gdb/dbx 调试线程进程的主要内容,如果未能解决你的问题,请参考以下文章

Linux gdb 多进程,多线程调试

gdb调试多进程多线程程序

该进程或线程自上一个步骤以来已更改

多线程与多进程的区别

Linux多进程和多线程的一次gdb调试实例

多线程还是多进程的选择及区别