有的時(shí)候線上版本會(huì)出現(xiàn)隱性Bug并且debug不能大概率復(fù)現(xiàn),造成難以斷點(diǎn)調(diào)試。這個(gè)時(shí)候測(cè)試會(huì)丟過(guò)來(lái)一個(gè).ips的文件包,需要手動(dòng)定位。

準(zhǔn)備動(dòng)作
將
.ips文件后綴改成.crash。發(fā)布版本的
.app.dSYM文件。一定要是你產(chǎn)生報(bào)錯(cuò)日志的版本。獲取方式:Window -> Organizer 找到你發(fā)包版本 右鍵 show in Finder 。.xcarchive文件下顯示包內(nèi)容 dSYMs -> 獲取。

- 新建的一個(gè)文件夾例如:Crash。將
xxx.app.dSYM和.crash放入新建的文件夾中。
打開終端
1:先獲取symbolicatecrash工具,
去如下路徑/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash去復(fù)制symbolicatecrash到crash文件夾內(nèi)。這個(gè)時(shí)候你crash文件夾內(nèi)有三個(gè)文件如下圖:

2:終端命令解析
cd到你的創(chuàng)建的crash文件夾
./symbolicatecrash ./xxx.crash ./xxx.app.dSYM > log.crash(symbolicatecrash路徑 空格 .crash路徑 空格 .app.dSYM路徑 輸出log的crash格式文件)
可能會(huì)出現(xiàn)如下錯(cuò)誤:
Error: "DEVELOPER_DIR" is not defined at /Users/snailchen/Desktop/crash/symbolicatecrash line 69.
xcode-select -print-path檢查一下:如果不是/Applications/Xcode.app/Contents/Developer/則輸入export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer驗(yàn)證
xcode-select -print-path

- 重復(fù)步驟2,會(huì)新生成一個(gè)log.crash文件
3:打開后就是一些堆棧的日志
這里我就不分析一些常見的bug了有興趣的可以去Google/Baidu一下:Watchdog timeout、User force-quit、Low Memory termination等等
- 這里分享兩個(gè)文檔:CrashReporter 、 Understanding...

如上圖可以定位到如下,可以看出這個(gè)錯(cuò)誤,上面只給出了一個(gè)內(nèi)容地址,連大概的錯(cuò)誤原因都沒有,一般情況下如果是數(shù)組越界,空值等等會(huì)顯示一個(gè)基本提示。但是就算如此也是不夠的,我們需要進(jìn)一步定位。
12 xxxx 0x00000001001a20fc 0x100070000 + 1253628
13 xxxx 0x00000001003fe9b0 0x100070000 + 3729840
14 xxxx 0x00000001004ced48 0x100070000 + 4582728
15 xxxx 0x00000001005e6608 0x100070000 + 5727752
進(jìn)一步定位
前往至發(fā)布版本的
dSYMs文件夾下,顯示包內(nèi)容

我們 cd 到該文件目錄下
atos -arch arm64 -o xxxx 0x100070000 (xxxx:為你APP即如上圖的SDKTest)
這樣就定位到項(xiàng)目中的具體報(bào)錯(cuò)了 : 的.m 文件的69行。
