我有一个多线程进程,它在Linux下运行时被卡住了。但是我没有多线程版本的pstack (用gstack制作的别名)。因此,gstack <pid>没有为我提供任何东西。我(a)如何将gdb附加到一个已经在运行的进程(b)获取单个线程的堆栈跟踪(c)从三个(如果已知的话)知道正在运行的进程(d)的三个,我如何才能看到卡在进程中运行的线程的堆栈跟踪/调用堆栈?
发布于 2017-09-21 11:44:54
首先,使用选项-O0 -ggdb编译它,以便进行最佳调试。
如果可以在gdb下运行,只需运行
# gdb ./yourbinary等等问题就行了。当进程陷入困境时,只需按^C键,您就可以加入了。
如果不能在gdb下运行,只需:
# gdb --pid=<YOUR PID>在这两种情况下,输入info threads,您将看到所有线程。然后选择一个,您就可以看到bt或其他任何东西。
https://stackoverflow.com/questions/46343007
复制相似问题