[英]Can I get a backtrace from an explicitly allocated stack
我有一个已明确分配堆栈的线程池(即,使用pthread_attr_setstack)。
是否可以在该堆栈上使用gnulib的backtrace和backtrace_symbols之类的东西?
谢谢。
在缓冲区指向的数组中,backtrace()返回调用程序的回溯。
因此,是的,它不在乎堆栈的分配位置。 您只需从目标线程调用它,堆栈信息就隐含在当前堆栈指针中。
如果要回溯另一个线程(正在运行的线程除外),则比较棘手。 一方面,它可能正在运行,这会使所有回溯的尝试都受到种族的影响。 但另一方面,我认为没有任何标准方法可以使当前堆栈指针(应该从该位置开始跟踪)对其他线程可见。 没有这些信息,您将无法开始跟踪,因为堆栈的底部实际上并不是足够的信息。
( ptrace
可以获取当前的寄存器值。这是调试器使用的系统调用。但是,这会造成很大的破坏)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.