2015-10-05 64 views
0

我正在使用通過cmake在Xcode中安裝的庫,並且希望允許我的調試器在調試我的應用程序時通過該庫的代碼。使用Xcode 7調試C++庫源碼GUI(lldb)

在構建並安裝依賴cmake項目後,依賴它的cmake項目將包含該項目。當它運行時,我想用Xcode調試器逐步完成依賴庫的代碼。

有沒有一種方法可以告訴Xcode我的主應用程序庫的頭文件,源代碼和調試構建的二進制文件(如果有必要)都可以通過?

我發現了一些相關的問題,但沒有一個提供了簡單的指導,用於配置在Xcode中使用GUI支持的庫的源代碼。

下面是一個example homebrew formula其中安裝一個cmake的項目並啓用調試符號。如果需要,我可以想出一個使用該庫的示例。

回答

1

如果您將庫的調試版本鏈接到您的應用程序,並且您沒有移動或刪除用於構建它的.o文件或這些.o文件的源文件,那麼您應該不會「不得不做任何事情。 lldb會從加載器中獲取庫的二進制文件的位置,並且將會有一個指向.o文件(其中,在OS X上,實際調試信息存儲在其中)的「調試映射」,然後lldb將讀取這些文件,調試信息將包含源文件的路徑。

因此,當您在庫中的某些代碼中停止時,如果您在Xcode中沒有看到源代碼,則此鏈的某些部分必定已經被破壞。

首先確保你真的是構建該庫的調試版本(即構建.o文件應該在他們-g編譯行)。

接下來,如果你的化妝過程中刪除.o文件或者在安裝之前剝離庫,那麼lldb將無法從二進制文件追蹤到調試信息。解決這個問題的最簡單方法是使用dsymutil實用程序將dSYM作爲構建過程的一部分,然後將dSYM安裝在lldb可以找到的某處(位於庫旁邊或Spotlight搜索的任意位置),或者使用lldb的add-dsym命令。請注意,如果庫被剝離,則需要在剝離之前製作dSYM。

最後,如果您在構建源文件時將源文件移動到原始位置,則可以按照第一個鏈接中所述使用源映射。

+0

我正在安裝自制軟件,它會刪除構建目錄。也許我需要手動安裝該軟件包呢? –

+0

是的,這聽起來像你必須這樣做。我不知道自制軟件是否會運行其他人的makefile或者至少爲安裝做出自己的貢獻。如果是後者,你也可以申請自制軟件,如果他們正在安裝一個庫的調試版本,他們將構建dSYM並將其作爲構建過程的一部分與庫一起安裝。 –