我想要使用C/C++获取正在运行进程所有线程的堆栈跟踪。
我知道获取堆栈跟踪的不同方式:
1. 我们有backtrace()api,但是问题在于它仅提供当前线程的堆栈跟踪。是否有人知道如何将其与每个运行的线程关联起来?
2. 我尝试的第二种方法是使用pstack命令。 pstack以运行进程的pid作为输入,显示所有线程的堆栈。但是,问题在于它不是一个C / C ++ api,所以我们不能在我们的代码中使用它。 (当我学习时)pstack是一个shell文件,反过来使用了gdb的bt命令。
是否有人知道其他方法可以帮助我获取正在运行进程的所有线程的堆栈跟踪?
我知道获取堆栈跟踪的不同方式:
1. 我们有backtrace()api,但是问题在于它仅提供当前线程的堆栈跟踪。是否有人知道如何将其与每个运行的线程关联起来?
2. 我尝试的第二种方法是使用pstack命令。 pstack以运行进程的pid作为输入,显示所有线程的堆栈。但是,问题在于它不是一个C / C ++ api,所以我们不能在我们的代码中使用它。 (当我学习时)pstack是一个shell文件,反过来使用了gdb的bt命令。
是否有人知道其他方法可以帮助我获取正在运行进程的所有线程的堆栈跟踪?
gdb
中使用thread apply all bt
。 - dlmeetei