Xcode自帶工具symbolicatecrash解析iOS Crash文件

一、簡介

  1. 符號(hào)表是什么?

符號(hào)表就是指在Xcode項(xiàng)目編譯后,在編譯生成的二進(jìn)制文件.app的同級(jí)目錄下生成的同名的.dSYM文件。
.dSYM文件其實(shí)是一個(gè)目錄,在子目錄中包含了一個(gè)16進(jìn)制的保存函數(shù)地址映射信息的中轉(zhuǎn)文件,所有Debug的symbols都在這個(gè)文件中(包括文件名、函數(shù)名、行號(hào)等),所以也稱之為調(diào)試符號(hào)信息文件
一般地,Xcode項(xiàng)目每次編譯后,都會(huì)生成一個(gè)新的.dSYM文件。因此,App的每一個(gè)發(fā)布版本,都需要備份一個(gè)對應(yīng)的.dSYM文件,以便后續(xù)調(diào)試定位問題。

二、crash日志符號(hào)化

1、準(zhǔn)備:
  • symbolicatecrash腳本工具

執(zhí)行如下命令

find /Applications/Xcode.app -name symbolicatecrash -type f

得到symbolicatecrash腳本工具路徑,然后按著該路徑找到該工具

/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
  • xxx.crash(crash日志)

1、如果設(shè)備就在身邊
連接設(shè)備,打開Xcode - Window -Devices and Simulaters -View Devices Log Organizer,然后根據(jù)時(shí)間排序查看crash日志。

2、如果應(yīng)用程序已經(jīng)提交App Store發(fā)布,用戶已經(jīng)安裝使用
之前開發(fā)者可以在iTunes Connect查看崩潰日志,后來蘋果改成如下方式:在Xcode上登錄你的賬號(hào),打開Xcode - Window - organizer - Crashes

(PS:不過大多數(shù)發(fā)者并不依賴于此。因?yàn)檫@需要用戶設(shè)備上同意上傳相關(guān)信息??紤]并不是所有iPhone用戶都允許發(fā)送診斷報(bào)告(crash日志),而且對于部分提交Apple的crash日志,開發(fā)者需要手動(dòng)拉取,然后找到對應(yīng)符號(hào)文件進(jìn)行解析——這是一件繁瑣的事情。所以實(shí)際項(xiàng)目中,通常接入現(xiàn)有的crash收集工具,或者自己編寫一個(gè)進(jìn)行自動(dòng)化收集、解析和統(tǒng)計(jì)匯總。所以實(shí)際項(xiàng)目中,通常接入現(xiàn)有的crash收集工具,或者自己編寫一個(gè)進(jìn)行自動(dòng)化收集、解析和統(tǒng)計(jì)匯總。)

  • xxx.app.dSYM

在Xcode - Window - Organizer - Archives中,找到對應(yīng)的版本
右擊Show in Finder,找到xxx.xcarchive
右擊顯示包內(nèi)容,找到dSYMs文件夾

  • xxx.app

項(xiàng)目中Products目錄

2、操作:

放在同一目錄下,執(zhí)行命令

./symbolicatecrash xxx.crash xxx.app.dSYM > Control_symbol.crash
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"

三、分析符號(hào)化后的crash日志

1、設(shè)備和crash信息
Incident Identifier: F3573A...E2F244A              //crash的id
CrashReporter Key:   cc2298...es77eeb              //crash的設(shè)備id
Hardware Model:      iPhone7,2                     //手機(jī)型號(hào)
Process:             [AppName] [1816]              //APP的名字[進(jìn)程的id]
Path:                /private/.../Application...   //APP的位置
Identifier:          com....                       //bundle ID
Version:             14 (2.3.5)                    //版本號(hào)
Code Type:           ARM-64 (Native)               //app的應(yīng)用架構(gòu)之類不大清楚,^_^
Parent Process:      launchd [1]

Date/Time:           2015-10-26 15:03:29.29 +0800    //crash發(fā)生時(shí)間
Launch Time:         2015-10-26 14:58:28.28 +0800    //進(jìn)入應(yīng)用時(shí)間
OS Version:          iOS 9.1 (13B143)                //iOS版本
Report Version:      105
2、異常信息
Exception Type:  EXC_BAD_ACCESS (SIGABRT)                      //異常的類型
Exception Subtype: KERN_INVALID_ADDRESS at 0x0000000000000118  //異常子類型
Triggered by Thread:  0                    //異常發(fā)生的線程(0為主線程,其他為子線程)
3、線程信息
Last Exception Backtrace:
0   CoreFoundation                    0x182780f48 __exceptionPreprocess + 124
1   libobjc.A.dylib                   0x197333f80 objc_exception_throw + 56
2   CoreFoundation                    0x182780e90 +[NSException raise:format:] + 120
3   [AppName]                            0x100c42a40 UmengSignalHandler + 144
4   libsystem_platform.dylib          0x197d6193c _sigtramp + 52
5   [AppName]                            0x1005d9f38 CScopePtr<IAVGAudioLogic>::operator IAVGAudioLogic*<IAVGAudioLogic>() (xprefc.h:165)
6   [AppName]                            0x1005d3b8c tencent::av::AVRoomMultiImpl::GetAudioLogic() (av_room_multi_impl.h:119)
7   [AppName]                            0x10057076c tencent::av::AVAudioCtrlImpl::SetAudioOutputMode(int) (av_audio_ctrl_impl.cpp:443)
8   [AppName]                            0x10044dc3c -[AVBasicManager changeSpeakerMode:] (AVManager.mm:525)
9   [AppName]                            0x100296e1c -[KTQAVRoom enableSpeakerMode:] (KTQAVRoom.m:345)
10  [AppName]                            0x1002970d0 -[KTQAVRoom settingSpeaker:] (KTQAVRoom.m:362)
11  [AppName]                            0x1003d5464 -[KTChatView onAudioNotificationReceived:] (KTChatView.m:685)

四、接入友盟SDK

參考鏈接:
http://www.itdecent.cn/p/12a2402b29c2

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

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

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