2010-01-06 78 views
6

我試圖從另一個程序中獲取運行進程(PID和二進制路徑已知)的堆棧回溯。有問題的程序是用C++編寫的,並用g ++和gdb調試符號編譯。獲取正在運行的進程的堆棧回溯

我正在尋找一個C或C++庫,跨Linux,產生類似於調用POPEN()與像這樣的輸出的輸出HP-UX和Solaris的工作原理:

gdb -batch -x /dev/stdin <BINARY> <PID> << EOF 
thread apply all bt 
EOF 

我已經找到了lsstack(http://sourceforge.net/projects/lsstack/),它只是Linux,並且知道Solaris的pstack程序。

有沒有人知道這樣做交叉Unix/POSIX的可靠方法?

+0

Linux上還有'gstack'工具,它通過調用類似上面的gdb來工作。 – mark4o 2010-01-06 18:47:37

回答

2

你需要libunwind

+0

謝謝! libunwind-ptrace看起來很有希望。 – jsc 2010-01-06 13:09:30

相關問題