天天看點

ios crash log的解析

關于ios的crash log的解析,自從接觸ios以來學到的解析方法,一直是非常傳統也非常複雜的,過程基本如下:

  1. 首先.app和DSYM,以及crash log三個檔案。建議放一個檔案夾。
  2. 驗證三者的UUID是否一緻,如果不一緻,将無法解析。驗證方法如下:

    2.1檢視xx.app檔案的uuid的方法,在terminal中輸入指令:

          dwarfdump --uuid xxx.app/xxx (xxx工程名)

    2.2 檢視xx.app.dSYM檔案的uuid的方法,在terminal中輸入指令:

           dwarfdump --uuid xxx.app.dSYM (xxx工程名)

    2.3 而.crash的uuid位于,crash日志中的Binary Images:中的第一行尖括号内。如:

             armv7 <8bdeaf1a0b233ac199728c2a0ebb4165>

  3. Xcode有自帶的symbolicatecrash工具,可以通過dSYM檔案将crash檔案中的16進制位址轉換成可讀的函數位址,symbolicatecrash工具位于:/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
  4. 設定xcode DEVELOPER_DIR:

      export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"  

  5. 最後執行: symbolicatecrash xxx.crash xxx.app.dSYM > new.log

這樣在這個檔案夾中你會發現,原來的記憶體位址變成了函數名。

不過這是比較老的方法了,步驟雖然不多,但是如果crash log檔案很多的話,也挺費時間。不過在最新的xcode中其實并不需要在做這些複雜的過程,有一篇部落格就已經說了,連結如下:http://www.cnblogs.com/max5945/p/3663966.html。

    原來也說得很清楚,就是spotlight你的crash log所對應的dsym和.app檔案(應該是根據UUID比對)。這樣你隻需要把crash log對應的dsmy和.app檔案拷貝到電腦,就不用解析上面繁瑣的步驟了,把crash log拷貝到xcode中的device logs中就可以自動解析出來了。很友善。

轉載于:https://my.oschina.net/u/2433745/blog/632409