如何在posix C中获得每个线程堆栈的大小和起始地址?或者,如果没有标准的posix方法来做到这一点,至少在Linux中与gcc一起使用。
有些程序,如Boehm-gc,应该以某种方式做到这一点,但我现在很困惑地阅读它们的代码。你能给我一些函数名吗?
发布于 2015-07-31 03:21:20
要做到这一点,“干净”但不可移植的方法是使用pthread_getattr_np (Linux/glibc等)。或类似的函数,以获得有关线程的属性对象,然后使用pthread_attr_getstack获取堆栈基/大小。但是,没有可移植的方法来做到这一点,而且基本上没有任何可移植的方法可以对结果进行处理。
发布于 2015-07-31 00:20:04
对于单线程情况,只需在原始和当前帧中获取局部变量的地址即可。
位于当前函数堆栈和main堆栈之间的任何地址都必须位于堆栈中。
注意,这不适用于直接定位的变量。您可能不得不禁用一些功能的内联。
https://stackoverflow.com/questions/31735834
复制相似问题