C ++获得不同线程的回溯

Alo*_*lon 5 c c++ multithreading pthreads backtrace

我想了解我的软件中特定线程的状态,它是从另一个线程执行的。具体来说,我想知道它是否卡住了I / O。我正在考虑通过获取backtrace来做到这一点(除非有人有其他想法?),因为我知道应该将其保留在哪个函数上..但我不知道如何获取该特定线程的backtrace,调用SEGFAULT处理程序...但是gdb可以做到(我怀疑他创建了SEGFAULTS ..)

有人可以帮忙吗?任何的想法?

[编辑]所有3个答案都涉及gdb,我知道我可以从gdb做到这一点,我想知道如何从软件中做到这一点(即使以某种方式链接到gdb库也可以解决,但如何?)

ks1*_*322 4

我知道它应该被困在哪个函数上..但我不知道如何获取该特定线程的回溯

您可以获取所有线程的回溯,并尝试找到应该卡在回溯输出中的函数。以下是如何获取 gdb 中的所有回溯:

(gdb) thread apply all bt
Run Code Online (Sandbox Code Playgroud)