我在 /usr/local/bin 中构建了 lldb 树的顶部,我想告诉 xcode 使用这个二进制文件而不是默认的二进制文件。但我找不到如何/在哪里设置它。
2 回答
不幸的是,这行不通。自从 lldb-179 为 Xcode 4.6.x 分支(约 2012 年 12 月上旬)以来,对 svn 存储库 lldb 进行了一些 API 更改。如果你把LLDB.framework
从当前 svn 构建的东西放进/Applications/Xcode.app/Contents/SharedFrameworks/
去,当你尝试调试任何东西时,它会导致 Xcode 崩溃。
作为背景,请记住 lldb 确实是一个调试器库。lldb 库位于LLDB.framework
驱动程序链接的 Mac OS X 上。命令行“lldb”程序是一个驱动程序,Xcode 是另一个驱动程序。未来可能会有额外的驱动程序,我们有时会开玩笑说“llgdb”,一个具有 gdb 外观但使用 lldb 库完成所有工作的驱动程序。
lldb 库提供驱动程序代码到/链接的 API。它是一个 C++ API。在这一点上,它并不打算长期稳定;有时需要对现有方法进行更改,并且必须针对较新版本更新/重新链接驱动程序。这就是为什么编译为链接到 2012 年 12 月初 lldb (Xcode 4.6.x) 的驱动程序 (Xcode) 如果您使用较新的版本会中断LLDB.framework
- 自 12 月以来 API 已更改了几次不兼容,因此 Xcode如果您尝试将它们混合在一起,将会崩溃。
没有可以从 svn 中签出的确切版本来获得与 Xcode 4.6 中包含的相同的 lldb-179 lldb。当需要标记该版本时,选择了一个稳定版本的 lldb 并将其导入苹果内部存储库。那是在 12 年 12 月的第一周左右,从那里进行的任何修订都将与 lldb-179 无法区分。从那时起,Xcode 4.6/lldb-179 有了一些小的更新,例如 lldb-179.1、lldb-179.2 等。这些都是由苹果内部分支制成的,是 lldb-179 加上一些精心挑选的修复稍后在公共 svn 存储库中。
除了提供的 C++ API 之外LLDB.framework
,有趣的是,lldb 还提供了一个“SB API”。这是python脚本接口的一个术语。您可以完全用 Python 编写真正的调试器驱动程序,使用 SB API 在幕后执行实际的调试器工作。当您直接链接时,这些 python API 比 C++ API 更稳定LLDB.framework
,但如果将来需要重新审视设计决策,它们偶尔仍需要更改。
顺便说一句,如果我没记错的话,使 Xcode 4.6 无法链接到 svn lldb 的第一个 API 更改是在一月或二月提交的。某些方法必须从采取 aint
变为采取 auint64_t
或类似的方式。这些是 C++ 方法,因此函数的名称已更改,并且 Xcode 必须针对新版本的 lldb 重新编译才能继续链接。
You could try replacing the lldb binary in the following folder /Applications/Xcode.app/Contents/Developer/usr/bin
or this one:
/usr/bin/lldb
However, I haven't tried this and I'm not sure if unofficial builds of the library will work with Xcode.