2010-01-06 48 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

相关问题