2017-09-21 50 views
0

我有一個在Linux下運行時遇到困難的多線程進程。但我沒有多線程版本pstack(製作別名gstack)。因此,gstack <pid>不提供任何東西。 (a)將gdb附加到已經運行的進程(b)獲取單個線程的堆棧跟蹤(c)從threadid(如果知道)知道正在運行的進程的線程(d)如何查看堆棧跟蹤/調用堆棧正在運行的線程在被卡住的進程中?如何在Linux中的掛起進程中查看特定線程的堆棧跟蹤

+0

對於(a)至少,你讀過gdb的基本手冊頁嗎?對於其他人,您是否閱讀過GDB幫助頁面? – Sneftel

回答

1

首先,使用選項-O0 -ggdb進行編譯以獲得最佳調試。

如果你能在gdb下運行,只需要運行

# gdb ./yourbinary 

而只是等待的問題。當過程遇到問題,只要按^C和你

如果你不能在gdb下運行,只是:

# gdb --pid=<YOUR PID> 

在這兩種情況下,類型info threads,你會看到所有的線程。然後選擇一個,你可以看到bt或其他任何東西。

相關問題