2017-05-27 75 views
1

當我編譯我的swift框架MyFramework我讓Xcode生成MyFramework.framework(編譯框架)和MyFramework.framework.dSYM(dSYM文件)。Xcode生成的DWARF文件中的相對路徑

通過運行dwarfdump myframework.framework.dSYM/Contents/Resources/DWARF/MyFramework我注意到源文件的所有路徑都是絕對路徑。

這使得與同事共享這兩個文物(連同源代碼)成爲不可能,並且允許他們使用編譯的框架並能夠正確地調試他們的代碼。更確切地說,他們無法使用調試器進入框架內部。

因此他們需要重新編譯這個非常不方便的框架。

有沒有辦法修改DWARF來編輯這些路徑,或者甚至更好地說服Xcode在DWARF文件中使用相對路徑?

回答

0

雖然我不知道如何更改存儲在dSYM中的路徑或使它們相對,但我可以提供一種解決此問題的方法,並且可以在任意機器上使用這些符號進行調試源代碼位於不同的基本路徑中。一旦你找出原始路徑是什麼(例如/ Users/rob/src/Project),並且你在例如這個庫中有該庫的代碼, /用戶/盧卡/資源/項目,那麼你就可以發出此命令LLDB,將取代調試器原路徑與路徑的那屆:

settings set target.source-map /Users/rob/src/Project /Users/luka/Sources/Project

不幸的是,你需要運行這個命令用於每個調試會話。爲此,您可以在您的主要中創建斷點,該斷點運行該命令並在不停止的情況下繼續執行。

要找到最初的源代碼路徑,您可以使用dwarfdump,或者您可以從lldb中查找符號,您可以使用im loo -v -n MySymbol或通過命令的其他參數(取決於符號的類型你正在嘗試使用)。