C++ 我可以从显式分配的堆栈中获取回溯吗

C++ 我可以从显式分配的堆栈中获取回溯吗,c++,pthreads,backtrace,C++,Pthreads,Backtrace,我有一个明确分配堆栈的线程池(即,使用pthread_attr_setstack) 可以在这个堆栈上使用gnulib的backtrace&backtrace_符号吗 谢谢 backtrace()返回数组中调用程序的回溯 由缓冲区指向的 因此,是的,它不关心堆栈被分配到哪里。您只需从目标线程调用它,堆栈信息就隐含在当前堆栈指针中 如果您想回溯另一个线程(而不是正在运行的线程),那就更麻烦了。一方面,它可能正在运行,这将使所有回溯的尝试受制于种族。但另一方面,我不认为有任何标准方法可以使当前堆栈指针

我有一个明确分配堆栈的线程池(即,使用pthread_attr_setstack)

可以在这个堆栈上使用gnulib的backtrace&backtrace_符号吗

谢谢

backtrace()返回数组中调用程序的回溯 由缓冲区指向的

因此,是的,它不关心堆栈被分配到哪里。您只需从目标线程调用它,堆栈信息就隐含在当前堆栈指针中

如果您想回溯另一个线程(而不是正在运行的线程),那就更麻烦了。一方面,它可能正在运行,这将使所有回溯的尝试受制于种族。但另一方面,我不认为有任何标准方法可以使当前堆栈指针(跟踪应该从这里开始)对另一个线程可见。如果没有这些信息,就无法启动跟踪,因为堆栈的底部实际上没有足够的信息

ptrace
可以获取当前寄存器值。这是调试器使用的系统调用。不过,这会造成相当大的中断)