2012-10-15 18 views
9

我的應用程序沒有看到源代碼庫:無符號/在Xcode源外部庫4

  • 如果我「跳轉到」對庫方法時,Xcode帶我到.h文件但是他說沒有的.cpp對應
  • 調試時,我沒有看到源代碼和大部分調用堆棧中缺少庫: enter image description here
  • 「調試時顯示拆卸」我已經確定沒有選中

我將庫構建爲DEBUG,然後將頭文件+ .a文件打包到SDK目錄中。所以我想我需要將調試文件複製到SDK目錄中,或者告訴我的應用程序在哪裏查找。我不知道該怎麼做。

爲了說明問題,我的應用程序項目不保留對庫項目的引用,只保留.a文件和標題目錄。這是因爲庫項目是由CMake創建的,我不想修改它。

+0

當時庫在您正在調試的機器上編譯?源代碼文件與使用調試信息進行編譯時的源代碼文件位於同一位置?編譯庫時,編譯器給出了哪些調試標誌? –

+0

是的,它編譯的是相同的Mac,但獨立,我只需告訴應用程序項目.a和頭文件。源.cpp文件不會移動,但我已移動標題和.a文件以創建SDK;有沒有絕對路徑或什麼? Xcode在哪裏以及如何存儲這些信息? –

+0

你有沒有解決這個問題?我在這裏有一個類似的問題:http://stackoverflow.com/questions/18903782/how-to-match-precompiled-static-librarys-debugging-symbols-to-source-code-with?lq=1 –

回答

8

首先,您應該檢查靜態庫的.debug_str部分,以驗證它是否包含適當的調試信息。

嘗試在終端上運行此命令:

xcrun dwarfdump /path/to/library.a | grep "\.m" 

你應該看到一堆源的(.M)文件路徑打印出來。從理論上講,這是Xcode在調試器中停止時的樣子,因此請確保這裏的路徑是正確的。如果您沒有看到任何的路徑,你需要建立你的圖書館時,適當的調試標誌(如-g傳遞給編譯器。

如果路徑在某種程度上不正確,或者你想給他們點到其他位置,您可以對它們進行修改,如C進行構建過程的一部分,例如,使它們相對於項目目錄。試着看一下「Make gcc put relative filenames in debug information」,即用CMake的調整這些調試路徑。

+0

僅供參考是一個C++應用程序,但我認爲我只替換.m爲.cpp我的答案是? –

+0

當我使用「\ .m」或「\ .cpp」運行時,我完全沒有輸出。你能仔細檢查這是正確的嗎?我的調試lib是650Mb相比30Mb的發佈版本,所以我非常肯定它正在構建爲調試! –

+0

在這個問題上的任何進展?我遇到了類似的問題在這裏:http://stackoverflow.com/questions/18903782/how-to-match-precompiled-static-librarys-debugging-symbols-to-source-code-with?lq=1 –