如何在OS X上获得准确的堆栈基址?

时间:2014-04-14 14:24:32

标签: c++ macos pthreads

  • pthread_attr_getstackaddr为我提供了类似0xfffffffffff80000的值,它似乎不是一个有效的基地址。
  • pthread_get_stackaddr_np,例如this answer中记录的并且似乎没有文档且不可移植,给我一个类似0x00007fff5fc00000的值,这似乎更明智。但是当我在我的程序中放置一个随机断点(使用gdb或lldb)并打印stackpointer时,我得到下面上面返回的地址(例如0x00007fff5fbfe7e0)。

所有操作都在pthread_self完成,我从不切换线程。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在Mac OS X(以及一般的x86系列处理器)上,堆栈从较高地址向较低地址逐渐减少。所以变量应该低于堆栈基址。