使用树顶部的lldb和xcode

mon*_*ani 1 xcode lldb

我在/ usr/local/bin中构建了lldb树的顶部,我想告诉xcode使用这个二进制文件而不是默认的二进制文件.但我找不到如何/在哪里设置这个.

Jas*_*nda 5

不幸的是,这不起作用.由于lldb-179已针对Xcode 4.6.x进行了分支(c.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.在这一点上,它不是长期稳定的; 偶尔需要对现有方法进行更改,并且必须针对较新版本更新/重新链接驱动程序.这就是为什么一个驱动程序(Xcode)被编译为链接到2012年12月初的lldb(Xcode 4.6.x)将会破坏,如果你投入更新LLDB.framework- 自12月以来API已经几次变得不相容,所以Xcode如果你试图混合它们会崩溃.

没有确切的修订版,您可以从svn查看以获得Xcode 4.6中包含的相同lldb-179 lldb.当标记该版本时,选择了稳定版本的lldb并将其导入到Apple内部存储库中.这是在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,但如果将来需要重新设计设计决策,它们偶尔也需要更改.

顺便说一句,如果我没记错的话,第一个API更改使得Xcode 4.6无法与svn lldb链接,而是在1月或2月提交.有些方法不得不采取的改变int,以便在拍摄uint64_t或类似的规定.这些是C++方法,因此更改了函数的损坏名称,并且必须针对新版本的lldb重新编译Xcode以继续链接.