首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在posix C中获取每个线程堆栈的大小和起始地址?

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

Stack Overflow用户
提问于 2015-07-30 23:39:35
回答 2查看 140关注 0票数 1

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-31 03:21:20

要做到这一点,“干净”但不可移植的方法是使用pthread_getattr_np (Linux/glibc等)。或类似的函数,以获得有关线程的属性对象,然后使用pthread_attr_getstack获取堆栈基/大小。但是,没有可移植的方法来做到这一点,而且基本上没有任何可移植的方法可以对结果进行处理。

票数 2
EN

Stack Overflow用户

发布于 2015-07-31 00:20:04

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

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

注意,这不适用于直接定位的变量。您可能不得不禁用一些功能的内联。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31735834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档