2013-05-01 27 views
1

我在/ usr/local/bin中構建了lldb樹的頂部,我想告訴xcode使用這個二進制而不是默認的。但我無法找到如何/在哪裏設置。在xcode中使用樹lldb的頂部

+0

你爲什麼想這樣做?由於某種原因,LLDB不適合你嗎? – danielbeard 2013-05-01 05:31:54

+0

因爲我從svn使用clang,並且在Xcode的調試視圖中查找一個框架變量時,有些日子Xcode會崩潰。 – monamimani 2013-05-01 14:43:47

回答

5

不幸的是,這是行不通的。自從lldb-179在Xcode 4.6.x上分支(c。2012年12月初)以來,已經對svn庫lldb進行了一些API更改。如果您將LLDB.framework從當前svn構建到/Applications/Xcode.app/Contents/SharedFrameworks/,那麼當您嘗試調試任何內容時,它將導致Xcode崩潰。

作爲背景,請記住,lldb確實是一個調試器。在Mac OS X上,lldb庫是LLDB.framework,驅動程序鏈接該庫。命令行「lldb」程序是一個驅動程序,Xcode是另一個驅動程序。未來可能會有更多的驅動程序,我們有時會開玩笑說「llgdb」,這個驅動程序的外觀看起來像gdb,但是使用lldb庫來完成所有工作。

lldb庫提供了一個API,驅動程序的代碼將被編碼/鏈接。它是一個C++ API。目前並不打算長期穩定;有時需要對現有方法進行更改,驅動程序必須更新/重新鏈接到新版本。這就是爲什麼一個驅動程序(Xcode)被編譯爲鏈接到2012年12月初的lldb(Xcode 4.6.x)將會中斷,如果你放入一個更新的LLDB.framework - 這些API自12月以來幾次改變了不匹配,所以如果你嘗試混合它們,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存儲庫中挑選的櫻桃。

除了由LLDB.framework提供的C++ API之外,有趣的是,lldb還提供了一個「SB API」。這是python腳本界面的術語。您可以完全使用Python編寫真正的調試器驅動程序,使用SB API在幕後執行實際的調試器工作。當您直接與LLDB.framework進行鏈接時,這些python API比C++ API更穩定,但如果將來需要重新設計決策,它們偶爾還是會有變化。另外,如果我沒有記錯的話,第一次API更改使得Xcode 4.6不能鏈接到svn lldb,這是在一月或二月提交的。有些方法必須從採取int變爲採取uint64_t或沿着這些方向。這些都是C++方法,所以函數的錯誤名稱發生了變化,Xcode必須重新編譯,以便與新版本的lldb繼續鏈接。

+0

SB API是什麼意思? – monamimani 2013-05-01 17:53:57

+0

你的意思是說蘋果是從開源的源代碼中分離出來的,因此xcode將不再兼容?或者它只是一個來自不同來源的後向不兼容性,並且在下一次更新中它們將同步。 – monamimani 2013-05-01 17:55:48

+0

SB代表腳本橋。它基本上與「LLDB公共API」相同。 發生了什麼是LLDB發佈了一個C++ API,其中一大部分是通過SWIG傳遞來生成一個Python層,即「SB」 - 即所有LLDB API對象都被命名爲SB_something_(例如SBProcess,SBType ,...) – 2013-05-07 19:58:40

0

你可以嘗試更換以下文件夾/Applications/Xcode.app/Contents/Developer/usr/bin 的LLDB二進制或這一個: /usr/bin/lldb

不過,我還沒有嘗試這樣做,我不知道,如果非官方構建庫將與合作的Xcode中。

+0

lldb實際上是一個調試器庫,'LLDB。框架「是真正的調試器。 lldb命令行程序是一個使用'LLDB.framework'來調試程序的工具。 Xcode是另一個。如果只想執行命令行調試,請將lldb命令行程序和'LLDB.framework'放在一起(以避免API不兼容問題)。只將svn樹頂部的lldb命令行程序複製到'/ Applications/Xcode.app'中不會達到你想要的 - 框架和lldb需要一起復制(並且兼容)。另外,Xcodde也需要兼容。 – 2013-05-01 08:52:13

+0

我懷疑可能是這種情況。感謝您的額外信息,我在llvm網站上找不到太多內容。你有什麼相關的鏈接,我可以看看? – danielbeard 2013-05-02 00:00:39

+0

http://lldb.llvm.org是lldb細節的通常起點。 – 2013-05-08 01:04:49