c++ - 获取正在运行的进程的堆栈回溯

标签 c++ c unix stack-trace

我正在尝试从另一个程序获取正在运行的进程(PID 和二进制路径已知)的堆栈回溯。有问题的程序是用 C++ 编写的,用带有 gdb 调试符号的 g++ 编译的。

我正在寻找一个可在 Linux、HP-UX 和 Solaris 上运行的 C 或 C++ 库,它产生的输出类似于使用以下内容调用 popen() 的输出:

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

我找到了 lsstack ( http://sourceforge.net/projects/lsstack/ ),它仅适用于 Linux,并且知道 Solaris 的 pstack 程序。

有人知道跨 Unix/POSIX 的可靠方法吗?

最佳答案

你需要libunwind

关于c++ - 获取正在运行的进程的堆栈回溯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2012303/

相关文章:

c++ - OpenGL 显示图像的速度是否比 OpenCV 快?

c++ - 静态初始化不使用 _initterm 而是使用 _Init_thread_header()/footer()

linux - 带有 if else 语句和调试问题的简单 bash 脚本

linux - 如何通过 unix utils 或 nmon 使用 hadoop fs 获取磁盘信息?

c++ - golang 的 Swig 包装器

c++ - Windows XP 上的 OpenCV GetTickCount64 错误

c++ - 如何中止 winsock 阻塞调用?

char 数组和指针初始化语义

c - OpenSSL 1.1.0 : HMAC_CTX must now be allocated, 为什么?

linux - 如何使用文件的行作为命令的参数?