使用多个线程调试C程序

use*_*152 3 c debugging gdb

我想调试运行多个TCP服务器线程的C程序.我无法设置复杂的调试工具,因为我必须在嵌入式Linux(忙箱)中进行调试.我希望它原生支持gdb.

所以我开始使用gdb.一旦我键入运行,服务器似乎在后台运行,但gdb返回提示和"程序接收信号SIG64(实时事件64)"消息(与猜测相关的pthread).我知道它必须与主要分叉到几个线程.但我不知道如何调试这个.任何起点都会非常有帮助.

另外,还有其他一些"跟踪"类似调试器,我可以使用小占用空间吗?

请帮忙

Eli*_*ser 7

大多数情况下,调试器很难调试多线程应用程序.最好的方法是尝试将错误隔离到单线程的情况,或者在可疑位置使用调试打印,直到发现错误.

这对您的具体问题没有帮助,但这是我在使用多线程应用程序时学到的最好建议,尤其是嵌入式应用程序.

  • @als:在这种情况下,最好有一个"记录器"线程,您可以在其中发送要打印的消息(例如通过msgqueue).记录器线程时间戳消息并按顺序打印它们从msg队列接收消息. (5认同)
  • 考虑到程序的多线程特性,有必要补充一点,在使用调试打印时,不要依赖不同线程的打印顺序。 (2认同)