2014-04-14 41 views
1
  • pthread_attr_getstackaddr給了我一個值,如0xfffffffffff80000這似乎不是一個有效的基地址。
  • pthread_get_stackaddr_np,如記錄在this answer中,似乎是無證的和不可移植的,給我一個像0x00007fff5fc00000這樣的值,這似乎更明智。但是,當我在程序中放置一個隨機斷點(使用gdb或lldb)並打印堆棧指針時,我得到的地址是,低於上面返回的地址(如0x00007fff5fbfe7e0)。

所有操作都在pthread_self上完成,我從不切換線程。有任何想法嗎?如何在OS X上獲得精確的堆棧基址?

+2

「我得到的地址低於」。在Mac OS X上(以及一般的x86系列處理器),堆棧會從較高地址向較低地址增長。所以你的變量應該低於棧基地址。 –

+0

@n.m .:哦......我現在覺得很蠢:) –

+0

如果你可以添加它作爲答案,那麼我可以接受它。 –

回答

1

在Mac OS X上(以及一般的x86系列處理器),堆棧會從較高地址向較低地址增長。所以變量應該低於堆棧基地址。