【发布时间】:2017-07-04 08:01:46
【问题描述】:
我想要的是获取所有线程的堆栈跟踪,以便使用 c/c++ 运行进程。
我知道获取堆栈跟踪的不同方式:
我们有 backtrace() api,但问题是它只提供当前线程的堆栈跟踪。有谁知道如何将它与每个正在运行的线程关联起来?
我尝试的第二种方法是使用 pstack 命令。 pstack 将输入作为正在运行的进程的 pid 显示所有线程的所有堆栈。但问题在于它不是 C/C++ api,所以我们不能在我们的代码中使用它。 (当我学习时)pstack是一个shell文件,它又使用了gdb的bt命令。
有没有人知道不同的方法可以帮助我获取所有线程的堆栈跟踪以运行进程?
【问题讨论】:
-
我将在
gdb中使用thread apply all bt -
您使用的是 pthreads 还是其他线程实现?
标签: c++ linux multithreading