1. 程式人生 > >crash log呼叫棧看不到的解決方案(debug symbols不起作用)

crash log呼叫棧看不到的解決方案(debug symbols不起作用)

 

1         前言

有時crash log在xcode中,看不到crash的呼叫堆疊,只有些十六進位制,下面是解決的參考方法。

2         先檢視symbolicate工具環境設定

步驟一:

在“終端”中,使用如下工具檢視symbolicate工具是否出問題了,命令後接crash log檔案。

/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

如果輸出Developer3什麼的,(假設你使用的Xcode目錄是Developer),則表明你裝了多個Xcode,Xcode路徑找的不對,使用如下命令徹底解除安裝Developer3:

sudo /Developer3/Library/uninstall-devtools -mode=all

然後輸入“xcode-select -switch /Developer”選擇Developer這個目錄。

步驟二:

重複步驟一,檢視輸出,如果在symbolicate系統庫出問題,則將如下目錄刪除:

/Users/peterdou/Library/Developer/Xcode/iOS DeviceSupport/5.0.1 (9A405)

以後比方說插上手機,該目錄會重新生成。

步驟三:

重複步驟一,如果覺得應該有symbol輸出但依然看不到,則說明對應的xcarchive沒找到

可嘗試如下“終端”命令:

以上完事後,依然不行,則嘗試下面build setting。

Ps:有可能編譯時出現libxml什麼的找不到情況,將Build setting中的屬性做如下修改:

3         再看project build setting

涉及到debug symbols的一些setting項如下:

1)  Generate Debug Symbols

2)  Strip Debug Symbols During Dopy

3)  Symbols Hidden by Default

3.1       setting項官方文件解釋

3.2       實驗一:以某一設定為標準,做三次嘗試,依次改了某一項,比較生成的包,結果是:

設定項

生成檔案結果的影響

Generate Debug Symbols

影響是否生成dSYM檔案

Strip Debug Symbols During Dopy

此值無論YES、NO,生成的dSYM和app大小都不變。

Symbols Hidden by Default

此值為YES時生成的app包稍微變小。

3.3       實驗二:哪些值影響symbol的顯示。

由實驗一可知,Generate Debug Symbols必須為YES,下面測試其他兩項:

設定項

Symbol是否顯示

Generate Debug Symbols

YES

顯示

Strip Debug Symbols During Dopy

任何值

Symbols Hidden by Default

任何值

結論:影響symbol顯示的,只有Generate Debug Symbols因素。

4         總結

要想看到symbol,必須:

1)        外部環境設定對;

2)        Generate Debug Symbol設YES;

檢視log前,必須用“終端”命令mdimport ~/Library/Developer/Xcode/Archives/ 使得spotlight可以找到dSYM檔案。