如何在posix C中获得每个线程堆栈的大小和起始地址?

如何在posix C中获得每个线程堆栈的大小和起始地址?,c,stack,C,Stack,如何在posix C中获得每个线程堆栈的大小和起始地址?或者,如果没有标准的posix方法,至少在使用gcc的Linux中是这样 一些程序,比如Boehm gc,应该以某种方式做到这一点,但我现在对阅读它们的代码感到非常困惑。你能给我一些函数名吗?对于单线程的情况,只需获取原始帧和当前帧中局部变量的地址即可 位于当前函数堆栈和main堆栈之间的任何地址都必须在堆栈中 请注意,这不适用于直接定位的变量。您可能必须禁用少数函数的内联。对于单线程情况,只需获取原始帧和当前帧中局部变量的地址即可 位于当

如何在posix C中获得每个线程堆栈的大小和起始地址?或者,如果没有标准的posix方法,至少在使用gcc的Linux中是这样


一些程序,比如Boehm gc,应该以某种方式做到这一点,但我现在对阅读它们的代码感到非常困惑。你能给我一些函数名吗?

对于单线程的情况,只需获取原始帧和当前帧中局部变量的地址即可

位于当前函数堆栈和main堆栈之间的任何地址都必须在堆栈中


请注意,这不适用于直接定位的变量。您可能必须禁用少数函数的内联。

对于单线程情况,只需获取原始帧和当前帧中局部变量的地址即可

位于当前函数堆栈和main堆栈之间的任何地址都必须在堆栈中


请注意,这不适用于直接定位的变量。您可能必须禁用一些函数的内联。

实现这一点的干净但不可移植的方法是使用pthread\u getattr\u np Linux/glibc等或类似函数来获取所讨论线程的attributes对象,然后使用pthread\u attr\u getstack来获取堆栈的基本/大小。但是,没有可移植的方法来实现这一点,而且基本上也没有可移植的方法来处理结果。

干净但不可移植的方法是使用pthread\u getattr\u np Linux/glibc等函数或类似函数来获取相关线程的attributes对象,然后pthread_attr_getstack获取堆栈的基本/大小。然而,没有可移植的方法来实现这一点,而且基本上也没有任何可移植的方法来处理结果