ios符號化

方法1 使用XCode
這種方法可能是最容易的方法了。

需要使用Xcode符號化 crash log,你需要下面所列的3個文件:

  1. crash報告(.crash文件)
  2. 符號文件 (.dsymb文件)
  3. 應(yīng)用程序文件 (appName.app文件,把IPA文件后綴改為zip缨伊,然后解壓,Payload目錄下的appName.app文件), 這里的appName是你的應(yīng)用程序的名稱。

把這3個文件放到同一個目錄下臣缀,打開Xcode的Window菜單下的organizer,然后點擊Devices tab泻帮,然后選中左邊的Device Logs精置。

然后把.crash文件拖到Device Logs或者選擇下面的import導(dǎo)入.crash文件。

方法2 使用命令行工具symbolicatecrash
有時候Xcode不能夠很好的符號化crash文件锣杂。我們這里介紹如何通過symbolicatecrash來手動符號化crash log脂倦。

在處理之前,請依然將“.app“, “.dSYM”和 ".crash"文件放到同一個目錄下≡現(xiàn)在打開終端(Terminal)然后輸入如下的命令:
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

然后輸入命令:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash appName.crash appName.app > appName.log

現(xiàn)在赖阻,符號化的crash log就保存在appName.log中了。

方法3 使用命令行工具atos
如果你有多個“.ipa”文件踱蠢,多個".dSYMB"文件火欧,你并不太確定到底“dSYMB”文件對應(yīng)哪個".ipa"文件,那么茎截,這個方法就非常適合你苇侵。

特別當(dāng)你的應(yīng)用發(fā)布到多個渠道的時候,你需要對不同渠道的crash文件企锌,寫一個自動化的分析腳本的時候榆浓,這個方法就極其有用。

這里先介紹一個概念:UUID

什么是UUID
每一個可執(zhí)行程序都有一個build UUID來唯一標(biāo)識霎俩。Crash日志包含發(fā)生crash的這個應(yīng)用(app)的 build UUID以及crash發(fā)生的時候哀军,應(yīng)用加載的所有庫文件的[build UUID]沉眶。

那如何知道crash文件的UUID呢?

可以用:
grep "appName armv" *crash

或者
grep --after-context=2 "Binary Images:" *crash

可以得到類似如下的結(jié)果:
appName.crash-0x4000 - 0x9e7fff appName armv7 <8bdeaf1a0b233ac199728c2a0ebb4165> /var/mobile/Applications/A0F8AB29-35D1-4E6E-84E2-954DE7D21CA1/appName.crash.app/appName

(請注意這里的0x4000杉适,是模塊的加載地址谎倔,后面用atos的時候會用到)

如何找到app的UUID
可以使用命令:
xcrun dwarfdump -–uuid <AppName.app/ExecutableName>

比如:
xcrun dwarfdump --uuid appName.app/appName

結(jié)果如下:
UUID: 8BDEAF1A-0B23-3AC1-9972-8C2A0EBB4165 (armv7) appName.app/appName
UUID: 5EA16BAC-BB52-3519-B218-342455A52E11 (armv7s) appName.app/appName

這個app有2個UUID,表明它是一個fat binnary猿推。

它能利用最新硬件的特性片习,又能兼容老版本的設(shè)備。

對比上面crash文件和app文件的UUID蹬叭,發(fā)現(xiàn)它們是匹配的:
8BDEAF1A-0B23-3AC1-9972-8C2A0EBB4165

用atos命令來符號化某個特定模塊加載地址
命令是:
atos [-o AppName.app/AppName] [-l loadAddress] [-arch architecture]

親測藕咏,下面3種都可以:
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é)可以找到如何得到這個地址孽查。)

文章開頭提到crash文件中有如下兩行,

  • 3 appName 0x000f462a 0x4000 + 984618
  • 4 appName 0x00352aee 0x4000 + 3468014

在執(zhí)行了上面的:
xcrun atos -o appName.app.dSYM/Contents/Resources/DWARF/appName -l 0x4000 -arch armv7

之后坦喘,輸入如下地址:
0x00352aee

(crash文件中的第4行:4 appName 0x00352aee 0x4000 + 3468014)

可以得到結(jié)果:
-[UIScrollView(UITouch) touchesEnded:withEvent:] (in appName) (UIScrollView+UITouch.h:26)

這樣就找到了應(yīng)用種到底是哪個模塊導(dǎo)致的crash問題盲再。

我從中選出一條調(diào)用進行符號化:
1 Taobao4iPhone 0x012c03e1 0x66000 + 19244001
使用下面的命令符號化:
atos -arch armv7 -o "Taobao4iPhone.app.dSYM" -l 0x66000 0x012c03e1
結(jié)果:
1 Taobao4iPhone 0x012c03e1 -[TBSNSPagesContainerView subviewLayoutPage:] (in Taobao4iPhone) (TBSNSPagesContainer.m:227)
總結(jié)
本文分析了拿到用戶的.crash文件之后,如何符合化crash文件的3種方法瓣铣,分別有其適用場景答朋,方法3適用于自動化crash文件的分析。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棠笑,一起剝皮案震驚了整個濱河市梦碗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蓖救,老刑警劉巖洪规,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異藻糖,居然都是意外死亡淹冰,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門巨柒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來樱拴,“玉大人,你說我怎么就攤上這事洋满【牵” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵牺勾,是天一觀的道長正罢。 經(jīng)常有香客問我,道長驻民,這世上最難降的妖魔是什么翻具? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任履怯,我火速辦了婚禮,結(jié)果婚禮上裆泳,老公的妹妹穿的比我還像新娘叹洲。我一直安慰自己,他們只是感情好工禾,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布运提。 她就那樣靜靜地躺著,像睡著了一般闻葵。 火紅的嫁衣襯著肌膚如雪民泵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天槽畔,我揣著相機與錄音栈妆,去河邊找鬼。 笑死竟痰,一個胖子當(dāng)著我的面吹牛签钩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播坏快,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼憎夷!你這毒婦竟也來了莽鸿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤拾给,失蹤者是張志新(化名)和其女友劉穎祥得,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蒋得,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡级及,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了额衙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饮焦。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖窍侧,靈堂內(nèi)的尸體忽然破棺而出县踢,到底是詐尸還是另有隱情,我是刑警寧澤伟件,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布硼啤,位于F島的核電站,受9級特大地震影響斧账,放射性物質(zhì)發(fā)生泄漏谴返。R本人自食惡果不足惜煞肾,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嗓袱。 院中可真熱鬧籍救,春花似錦、人聲如沸索抓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽逼肯。三九已至耸黑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間篮幢,已是汗流浹背大刊。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留三椿,地道東北人缺菌。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像搜锰,于是被迫代替她去往敵國和親伴郁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

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

  • 轉(zhuǎn)自wufawei的博客當(dāng)你的應(yīng)用提交到App Store或者各個渠道之后蛋叼,請問你多久會拿到crash文件焊傅?你如何...
    Louis_hey閱讀 1,450評論 0 6
  • 本文就捕獲iOS Crash、Crash日志組成狈涮、Crash日志符號化狐胎、異常信息解讀、常見的Crash五部分介紹歌馍。...
    xukuangbo_閱讀 1,587評論 0 0
  • 一般做項目的時候會碰到一些崩潰的情況握巢。在非調(diào)試模式下沒有辦法判斷崩潰在哪里,只能通過崩潰日志來分析松却,如果崩潰日志在...
    chaoyk閱讀 1,476評論 0 2
  • Determining Whether a Crash Report is Symbolicated(決定是否符號...
    helinyu閱讀 1,440評論 0 1
  • 其實和大多數(shù)人一樣暴浦,我們既想自己的身材苗條又有一顆吃貨的嘴。有時候是真的胃餓玻褪,有時候是真的嘴饞肉渴。 在大多數(shù)食物里。...
    文而姑娘閱讀 350評論 0 3