OS X 是如何实现 backtrace() 的?

How Does OS X Implement backtrace()?

有谁知道我在哪里可以找到实现 OS X 版本的 backtrace() 的代码?我知道它可能在 libSystem.B.dylib 中的某处,所以我应该从 Apple's read-only open-source repository 中获取该模块的源代码,但我应该从里面的什么地方开始寻找?

实际上,大部分内容都在 Libc. In particular, backtrace() is defined here. However, that's mostly just a thin wrapper around the internal function _thread_stack_pcs(), which is defined here

找到这类东西的最简单方法可能是 Google。例如,搜索 "backtrace" site:opensource.apple.com 会将您带到旧版本的 Libc。然后,您可以从 http://opensource.apple.com 的顶部开始查找在 OS.

的给定版本中使用的版本

backtrace() http://www.opensource.apple.com/source/Libc/Libc-1044.1.2/gen/backtrace.c

_thread_stack_pcs() http://www.opensource.apple.com/source/Libc/Libc-1044.1.2/gen/thread_stack_pcs.c