app上架appStore之后bug crash 手動定位奔潰位置

  • app在本地調(diào)試debug模式下亲桦,我們很方便就可以定位到代碼崩潰位置,比如通過打全局?jǐn)帱c(diǎn)流昏,看控制臺輸出信息等粮坞。
  • 當(dāng)app上架之后关顷,如果發(fā)生嚴(yán)重的bug,導(dǎo)致軟件閃退,我想大部分同學(xué)第一想法就是去相關(guān)模塊去一行一行的查看代碼有沒有問題吧

現(xiàn)在我們利用.crash文件 .dSYM文件和.app文件來一步定位到軟件奔潰位置

  • 首先看看這幾個文件都是做什么的
    • .crash文件 :記錄了app奔潰信息莹规,我們主要看程序奔潰地址
      • 可以通過xcode->Window->Organizer->Crashes獲取.crash文件
      • 連上手機(jī)xcode->window->Devices->view Device logs獲取
      • 也可以通過iTunes connect 中獲取
  • 什么是.dSYM 文件 dSYM 文件分析工具

Xcode編譯項(xiàng)目后良漱,我們會看到一個同名的 dSYM 文件,dSYM 是保存 16 進(jìn)制函數(shù)地址映射信息的中轉(zhuǎn)文件高镐,我們調(diào)試的 symbols 都會包含在這個文件中儡陨,并且每次編譯項(xiàng)目的時候都會生成一個新的 dSYM 文件,位于 /Users/<用戶名>/Library/Developer/Xcode/Archives 目錄下残吩,對于每一個發(fā)布版本我們都很有必要保存對應(yīng)的 Archives 文件 ( AUTOMATICALLY SAVE THE DSYM FILES 這篇文章介紹了通過腳本每次編譯后都自動保存 dSYM 文件)财忽。

- 通過`Xcode -> window ->organizer ->Archives ->選擇對應(yīng)Archives版本  右鍵show finder ->右鍵  顯示包內(nèi)容 -> dSYMs文件夾中就是我們要找的.dSYM文件`
  • .app 文件:找到我們打包生成的.ipa文件->后綴名改為.zip ->打卡zip文件 里面就是我們要找的.app文件

  • ** 一般情況下 在crash文件中我們可以找到奔潰位置 如下圖的綠色夠夠**
tn2151_symbolication_levels.png
  • ** 大部分情況下,我們看到的都是上圖兩個紅叉標(biāo)識的那樣 只有十六進(jìn)制的函數(shù)地址泣侮,那么現(xiàn)在我們就要想辦法通過函數(shù)地址找到方法名和類名即彪,也就是給crash進(jìn)行符號化 **

  • ** 使用symbolicatecrash工具符號化crash文件 **

    • 在桌面上創(chuàng)建文件夾crash 把對應(yīng)的creah文件,dSYM文件活尊,和.app文件放到crash文件夾中
    • 在終端 輸入find /Applications/Xcode.app -name symbolicatecrash -type f 查看symbolicatecrash工具的位置隶校,** 不同版本Xcode symbolicatecrash 位置不同 **
    • ** 我這里的位置是 ** /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
  • 0606000A-8B8C-4A4C-819A-01149B8FD781.png
  • 進(jìn)入這個位置找到symbolicatecrash工具 也復(fù)制到桌面crash 文件夾中

2206D5E1-9B65-41D9-B1AA-B64203F6C754.png
  • 在終端輸入下面的命令

    • cd /Users/mac/Desktop/crash
    • export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
    • ./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
  • 這個時候文件夾中會有symbol.crash文件,是經(jīng)過符號化后的crash文件蛹锰,我們可以很清楚的看到奔潰的方法名和類名以及行數(shù)

  • ** 但是有時候深胳,我們可能得到的是一個空的symbol.crash 文件,或者是沒有經(jīng)過符號化的symbol.crash文件铜犬,太晚了舞终,改天再加上解決辦法 **

  • 打印.app文件 .dSYM文件的UUID

    • .app文件 終端命令:dwarfdump --uuid .app文件(路徑)
    • .dSYM文件 終端命令: dwarfdump --uuid .dSYM文件 (路勁)
    • UUID 號,可以在.crash文件中 找到
      • 1."slice_uuid":"9bfd01a9-4203-3d18-89ca-e0c9e01e0790"
        1. Binary Images: 0x100044000 - 0x1004effff QRCodeCar arm64 <9bfd01a942033d1889cae0c9e01e0790>

      如上面的 9bfd01a942033d1889cae0c9e01e0790 就是UUID

  • 使用atos 工具定位奔潰位置
    使用symbolicatecrash工具可以得到所有線程的方法信息癣猾。
    使用atos 工具只能得到單條線程方法信息
    過程如下:找到下圖的奔潰位置

    - 終端命令:atos -arch <Binary Architecture> -o <Path to dSYM file>/Contents/Resources/DWARF/<binary image name> -l <load address> <address to symbolicate>
    
    • 如:atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc
      輸出:-[AtomicElementViewController myTransitionDidStop:finished:context:]

優(yōu)點(diǎn)敛劝,只需要.dSYM 文件,外加一句終端命令就可定位奔潰信息纷宇,簡單方便快捷夸盟。
缺點(diǎn),每次只能定位一條像捶。上陕。桩砰。

  • 第三方定位奔潰位置
    • 騰訊bugly接入
    • 按照ugly接入文檔,集成到自己的項(xiàng)目中唆垃,無論是模擬器五芝,內(nèi)測還是上架appStroe都可以收集到奔潰信息
    • 如圖:我的內(nèi)測版本
6E11B5D0-C920-459E-9766-882ED6450D71.png
  • 很清楚,我的app奔潰在了類名為DXQR_LoginViewController 中辕万,方法名為p_loginNetMethod 在該類的第32行枢步,我可以直接打開工程去該位置去修復(fù)即可,是不是很方便=ツ颉W硗尽!

參考:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砖茸,一起剝皮案震驚了整個濱河市隘擎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌凉夯,老刑警劉巖货葬,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異劲够,居然都是意外死亡震桶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門征绎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹲姐,“玉大人,你說我怎么就攤上這事人柿〔穸眨” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵凫岖,是天一觀的道長江咳。 經(jīng)常有香客問我,道長哥放,這世上最難降的妖魔是什么歼指? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮婶芭,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘着饥。我一直安慰自己犀农,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布宰掉。 她就那樣靜靜地躺著呵哨,像睡著了一般赁濒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孟害,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天拒炎,我揣著相機(jī)與錄音,去河邊找鬼挨务。 笑死击你,一個胖子當(dāng)著我的面吹牛挥唠,可吹牛的內(nèi)容都是我干的仅叫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼已添,長吁一口氣:“原來是場噩夢啊……” “哼朝巫!你這毒婦竟也來了鸿摇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤劈猿,失蹤者是張志新(化名)和其女友劉穎拙吉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體揪荣,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筷黔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了变逃。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片必逆。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖揽乱,靈堂內(nèi)的尸體忽然破棺而出名眉,到底是詐尸還是另有隱情,我是刑警寧澤凰棉,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布损拢,位于F島的核電站,受9級特大地震影響撒犀,放射性物質(zhì)發(fā)生泄漏福压。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一或舞、第九天 我趴在偏房一處隱蔽的房頂上張望荆姆。 院中可真熱鬧,春花似錦映凳、人聲如沸胆筒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仆救。三九已至抒和,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彤蔽,已是汗流浹背摧莽。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留顿痪,地道東北人镊辕。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像员魏,于是被迫代替她去往敵國和親丑蛤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

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