繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM