crash日志符號(hào)化治唤,以分析崩潰

為什么需要符號(hào)化

Filtered syslog:
None found

Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0:
0   ...gou.sogouinput.BaseKeyboard  0x0000000100196000 0x100030000 + 1466368
1   ...gou.sogouinput.BaseKeyboard  0x0000000100191ca4 0x100030000 + 1449124
2   ...gou.sogouinput.BaseKeyboard  0x00000001001aadd8 0x100030000 + 1551832
3   ...gou.sogouinput.BaseKeyboard  0x00000001003942b0 0x100030000 + 3556016
4   ...gou.sogouinput.BaseKeyboard  0x0000000100393b30 0x100030000 + 3554096
5   ...gou.sogouinput.BaseKeyboard  0x00000001003c7bbc 0x100030000 + 3767228
6   ...gou.sogouinput.BaseKeyboard  0x00000001003c8a48 0x100030000 + 3770952
7   ...gou.sogouinput.BaseKeyboard  0x0000000100103158 0x100030000 + 864600
8   ...gou.sogouinput.BaseKeyboard  0x0000000100391d10 0x100030000 + 3546384
9   ...gou.sogouinput.BaseKeyboard  0x00000001003912c4 0x100030000 + 3543748
10  ...gou.sogouinput.BaseKeyboard  0x00000001003b4ba4 0x100030000 + 3689380
11  ...gou.sogouinput.BaseKeyboard  0x0000000100268174 0x100030000 + 2326900
12  ...gou.sogouinput.BaseKeyboard  0x0000000100268580 0x100030000 + 2327936

上面是sogou輸入法的crash日志船惨。像0x100030000 + 1466368這樣的都只給出了內(nèi)存的崩潰地址粱锐。但無法得到是哪個(gè)方法調(diào)用扛邑。符號(hào)化就是將這些內(nèi)存地址轉(zhuǎn)換成對(duì)應(yīng)的可讀性方法。

準(zhǔn)備相關(guān)文件

要對(duì)crash日志進(jìn)行符號(hào)化蔬崩,需要四樣?xùn)|西:

  1. 從設(shè)備上導(dǎo)出的crash 日志
  2. .dSYM文件
  3. .app文件
  4. symbolicatecrash工具
crash 日志的導(dǎo)出

將設(shè)備連接電腦海雪,xcode->Window->devices->選擇設(shè)備->view device log->找到對(duì)應(yīng)的crash日志->export log舱殿。

生成.dSYM文件

crash日志的符號(hào)化主要借助dSYM文件奥裸。得到dSYM文件的方法:Target -> Build Setting -> Debug Information Format -> DWARF with dSYM File沪袭。這樣就可以和.app一起生成.dSYM文件了湾宙。

app`文件

symbolicatecrash工具
  1. 找到symbolicatecrash
find /Applications/Xcode.app -name symbolicatecrash -type f11
  1. 稍等一會(huì)就會(huì)有路徑輸出冈绊,這個(gè)路徑就是symbolicatecrash的路徑

    路徑可能不止一個(gè)侠鳄,隨意選一個(gè)

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
  1. 用命令將symbolicatecrash拷貝到桌面的crash文件夾里面,與.app和.app.dSYM放一起(手動(dòng)找到symbolicatecrash死宣,拷貝出來也行)

    當(dāng)然伟恶,不cp也可以的毅该。為了清楚和方便使用,copy出來放一起挡育。

cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash ~/Desktop
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"

符號(hào)化

./symbolicatecrash XXXApp.crash XXXApp.app > crash.log

結(jié)果

對(duì)比.crash和.log文件可以發(fā)現(xiàn)地址被替換成方法名、代碼行等有用信息母赵。

//部分內(nèi)容被修改過了
Filtered syslog:
None found

Last Exception Backtrace:
0   CoreFoundation                  0x1894fafe0 __exceptionPreprocess + 124
1   libobjc.A.dylib                 0x187f5c538 objc_exception_throw + 56
2   CoreFoundation                  0x1894faca8 -[NSException raise] + 12
3   Foundation                      0x189f1068c -[NSObject(NSKeyValueCoding) setValue:forKey:] + 272
4   XXXXApp                         0x102fb5850 -[XXXXAppManager enterRooms] (XXXXAppManager.m:33)
5   XXXXApp                         0x102f6de2c +[XXXXAppSDK showChatModule] (XXXXAppSDK.m:23)
6   XXXXApp                         0x100a918d4 +[XXXXAppManager callName:selectorName:params:] (XXXXAppManager.m:28)
7   XXXXApp                         0x100278bfc -[XXXXAppTopView buttonClick:] (XXXXAppView.m:112)
8   UIKit                           0x18f661c54 -[UIApplication sendAction:to:from:forEvent:] + 96
Filtered syslog:
None found

Last Exception Backtrace:
0   CoreFoundation                  0x1894fafe0 __exceptionPreprocess + 124
1   libobjc.A.dylib                 0x187f5c538 objc_exception_throw + 56
2   CoreFoundation                  0x1894faca8 -[NSException raise] + 12
3   Foundation                      0x189f1068c -[NSObject(NSKeyValueCoding) setValue:forKey:] + 272
4   XXXXApp                         0x102fb5850 0x1000d4000 + 49158224
5   XXXXApp                         0x102f6de2c 0x1000d4000 + 48864812
6   XXXXApp                         0x100a918d4 0x1000d4000 + 10213588
7   XXXXApp                         0x100278bfc 0x1000d4000 + 1723388
8   UIKit                           0x18f661c54 -[UIApplication sendAction:to:from:forEvent:] + 96

  • debug 模式下跑的包凹嘲,產(chǎn)生的crash日志不需要符號(hào)化
  • 線上環(huán)境app集成了Crashlytics,上報(bào)的crash已經(jīng)符號(hào)化了
  • 主要是回歸測試階段對(duì)于部分崩潰需要這種分析方式
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末施绎,一起剝皮案震驚了整個(gè)濱河市溯革,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谷醉,老刑警劉巖致稀,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異俱尼,居然都是意外死亡抖单,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門遇八,熙熙樓的掌柜王于貴愁眉苦臉地迎上來矛绘,“玉大人,你說我怎么就攤上這事刃永』醢” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵斯够,是天一觀的道長囚玫。 經(jīng)常有香客問我,道長读规,這世上最難降的妖魔是什么抓督? 我笑而不...
    開封第一講書人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮束亏,結(jié)果婚禮上铃在,老公的妹妹穿的比我還像新娘。我一直安慰自己碍遍,他們只是感情好定铜,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著雀久,像睡著了一般宿稀。 火紅的嫁衣襯著肌膚如雪趁舀。 梳的紋絲不亂的頭發(fā)上赖捌,一...
    開封第一講書人閱讀 52,262評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼越庇。 笑死罩锐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卤唉。 我是一名探鬼主播涩惑,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼桑驱!你這毒婦竟也來了竭恬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤熬的,失蹤者是張志新(化名)和其女友劉穎痊硕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體押框,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡岔绸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了橡伞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盒揉。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖兑徘,靈堂內(nèi)的尸體忽然破棺而出刚盈,到底是詐尸還是另有隱情,我是刑警寧澤挂脑,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布扁掸,位于F島的核電站,受9級(jí)特大地震影響最域,放射性物質(zhì)發(fā)生泄漏谴分。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一镀脂、第九天 我趴在偏房一處隱蔽的房頂上張望牺蹄。 院中可真熱鬧,春花似錦薄翅、人聲如沸沙兰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鼎天。三九已至,卻和暖如春暑竟,著一層夾襖步出監(jiān)牢的瞬間斋射,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罗岖,地道東北人涧至。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像桑包,于是被迫代替她去往敵國和親南蓬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 前言 崩潰是讓發(fā)人員比較頭痛的事情哑了,app崩潰了赘方,說明代碼寫的有問題,這時(shí)如何快速定位到崩潰的地方很重要弱左。調(diào)試階段...
    進(jìn)無盡閱讀 2,028評(píng)論 0 9
  • LLVM簡介 XCode4.0以后蒜焊,LLVM是構(gòu)架編譯器(compiler)的框架系統(tǒng),以C++編寫而成科贬,用于優(yōu)化...
    苦工閱讀 9,632評(píng)論 1 16
  • 如果大家是用真機(jī)在調(diào)試的過程中出現(xiàn)了Crash泳梆,那么請看iOS調(diào)試之 crash log分析 前言 導(dǎo)讀:Unde...
    KODIE閱讀 6,471評(píng)論 7 12
  • 轉(zhuǎn)自wufawei的博客當(dāng)你的應(yīng)用提交到App Store或者各個(gè)渠道之后,請問你多久會(huì)拿到crash文件榜掌?你如何...
    Louis_hey閱讀 1,450評(píng)論 0 6
  • 大家都好奇优妙,我在安聯(lián)實(shí)習(xí)的工作內(nèi)容是什么,開始我也很難說出個(gè)一二三來憎账。我的工作很雜套硼,幫主管在招聘網(wǎng)站上進(jìn)行電話邀約...
    像魚_閱讀 360評(píng)論 0 0