atos 符號化.dSYM中的bug

最近優(yōu)化項目,整理了一下如何分析第三方統(tǒng)計上來的bug;

前提是你知道了bug出現(xiàn)的當(dāng)前的.dSYM,分渠道匹配.dSYM在這里就不細說了。網(wǎng)上一堆這方面的資源。

arm64堆棧信息
armv7堆棧信息
armv7和arm64下的地址

從堆棧信息可以看出問題出現(xiàn)的十六進制stock Address 也就是第3條;

armv7下 stock Address = slide Address + 252657 + 0x4000;

符號化地址 = stock Address - slide Address;

arm64下 符號化地址為 start Address ~ stock Address;

下面通過atos 命令來符號化bug所在代碼;

armv7:

xcrun atos -o appName.app.dSYM/Contents/Resources/DWARF/appName -l 0x4000 -arch armv7

xcrun?atos?-o?appName.app.dSYM/Contents/Resources/DWARF/appName?-arch?armv7

xcrun?atos?-o?appName.app/appName?-arch?armv7

(注:這3行選任意一行執(zhí)行都可以達到目的,其中0x4000是模塊的加載地址,從上面的章節(jié)可以找到如何得到這個地址。)

arm64:

xcrun atos -o AppName.app.dSYM/Contents/Resources/DWARF/AppName -l 0x1000d8000 0x000000010011a8b0 -arch arm64

第一步:找到對應(yīng)archive出來的.dSYM;

archives文件所在
archives解包

第二步 iterm中執(zhí)行命令 如果是armv7的執(zhí)行上面的三句命令的一句;我執(zhí)行的是這一條

xcrun?atos?-o?appName.app.dSYM/Contents/Resources/DWARF/appName?-l?0x4000?-arch?armv7

然后再輸入符號地址即可得到bug所在目錄

iterm執(zhí)行命令

從終端可以很清晰的看到問題出現(xiàn)所在的文件以及bug所在的行;

code一看一目了然

release 打包后斷言(NSAssert1)是被屏蔽的,也就是上面的if判斷不起任何作用,所以這個地方有點自以為是了;

http://www.cocoachina.com/industry/20140514/8418.html 此文章撰寫的其它兩張解決bug的方法也比較好,可以研究一下;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容