iOS崩潰日志分析

補(bǔ)充2個(gè)概念(來源掘金翻譯):

什么是 dSYM 文件

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

dSYM 文件有什么作用

當(dāng)我們軟件 release 模式打包或上線后毛甲,不會像我們在 Xcode 中那樣直觀的看到用崩潰的錯(cuò)誤,這個(gè)時(shí)候我們就需要分析 crash report 文件了具被,iOS 設(shè)備中會有日志文件保存我們每個(gè)應(yīng)用出錯(cuò)的函數(shù)內(nèi)存地址玻募,通過 Xcode 的 Organizer 可以將 iOS 設(shè)備中的 DeviceLog 導(dǎo)出成 crash 文件,這個(gè)時(shí)候我們就可以通過出錯(cuò)的函數(shù)地址去查詢 dSYM 文件中程序?qū)?yīng)的函數(shù)名和文件名一姿。大前提是我們需要有軟件版本對應(yīng)的 dSYM 文件七咧,這也是為什么我們很有必要保存每個(gè)發(fā)布版本的 Archives 文件了。


iOS崩潰日志分析叮叹,很多第三方sdk都有艾栋,也比較方便。但是個(gè)別時(shí)候蛉顽,公司并不允許接入第三方蝗砾,需要我們自己實(shí)現(xiàn)并且分析。下面就系統(tǒng)crash log來簡單介紹下怎么分析閃退點(diǎn):


0? CoreFoundation? ? ? ? ? ? ? ? 0x3025cf7e __exceptionPreprocess + 126

1? libobjc.A.dylib? ? ? ? ? ? ? 0x3aad7cca objc_exception_throw + 34

2? CoreFoundation? ? ? ? ? ? ? ? 0x30193a34 -[__NSArrayI objectAtIndex:] + 172

3? iportal? ? ? ? ? ? ? ? ? ? ? 0x003c975c 0xa3000 + 3303260

4? iportal? ? ? ? ? ? ? ? ? ? ? 0x002882fc 0xa3000 + 1987324

一般閃退是這樣的携冤,找到你項(xiàng)目首次出現(xiàn)的地方悼粮,以3為例,0x003c975c(代碼的內(nèi)存地址)曾棕,0xa3000(應(yīng)用代碼的入口地址)扣猫,3303260(代碼的內(nèi)存地址-應(yīng)用代碼的入口地址,即代碼的偏移地址)翘地。

修正地址:不同的應(yīng)用包申尤,其修正地址可能不一樣。修正地址的查看方法衙耕,使用otool命令查看

otool -arch armv7 -l ~/iportal.app/iportal

得到如下信息:

0x00004000

Load command 1

cmd LC_SEGMENT

cmdsize 736

segname __TEXT

vmaddr 0x00004000

vmsize 0x007cc000

fileoff 0

filesize 8175616

maxprot 0x00000005

initprot 0x00000005

nsects 10

flags 0x0

其中的LC_SEGMENT段的vmaddr(虛擬機(jī)入口地址)為修正地址昧穿。

使用dwarfdump 查看代碼符號信息。3303260 + 0x00004000 = 0x32a75c

dwarfdump --lookup=0x32a75c --arch=armv7 ~/iportal.app.dSYM |grep -E "start_addr:|Line table file:"

得到如下信息:

Line table file: 'AppDelegate.m' line 46, column 0 with start address 0x0000000000083e38

start_addr: 0x00083a58 -[AppDelegate application:didFinishLaunchingWithOptions:]


到這邊臭杰,就定位到代碼行和方法了粤咪。可以去改bug了渴杆。

注意:不同架構(gòu)偏移量請分別計(jì)算,armv7 arm64以及armv7s

有疑問歡迎留言交流宪塔!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末磁奖,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子某筐,更是在濱河造成了極大的恐慌比搭,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件南誊,死亡現(xiàn)場離奇詭異身诺,居然都是意外死亡蜜托,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門霉赡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來橄务,“玉大人,你說我怎么就攤上這事穴亏》渑玻” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵嗓化,是天一觀的道長棠涮。 經(jīng)常有香客問我,道長刺覆,這世上最難降的妖魔是什么严肪? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮谦屑,結(jié)果婚禮上驳糯,老公的妹妹穿的比我還像新娘。我一直安慰自己伦仍,他們只是感情好结窘,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著充蓝,像睡著了一般隧枫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谓苟,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天官脓,我揣著相機(jī)與錄音,去河邊找鬼涝焙。 笑死卑笨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的仑撞。 我是一名探鬼主播赤兴,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼隧哮!你這毒婦竟也來了桶良?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤沮翔,失蹤者是張志新(化名)和其女友劉穎陨帆,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡疲牵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年承二,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纲爸。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡亥鸠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缩焦,到底是詐尸還是另有隱情读虏,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布袁滥,位于F島的核電站盖桥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏题翻。R本人自食惡果不足惜揩徊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嵌赠。 院中可真熱鬧塑荒,春花似錦、人聲如沸姜挺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炊豪。三九已至凌箕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間词渤,已是汗流浹背牵舱。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留缺虐,地道東北人芜壁。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像高氮,于是被迫代替她去往敵國和親慧妄。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

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

  • 什么是崩潰日志 iOS的App在崩潰時(shí)剪芍,系統(tǒng)會記錄下當(dāng)前的每個(gè)線程的調(diào)用棧信息等等腰涧,并保存到設(shè)備中。這些信息匯總起...
    handyTOOL閱讀 3,947評論 0 12
  • 之前整理了一篇文章,寫的是在本地搭建IPV6環(huán)境,搭建完成之后,發(fā)現(xiàn)我的APP沒有問題,于是,我只能從審核給返回的...
    和影子玩拳擊閱讀 964評論 0 0
  • 1. 手機(jī)連接電腦紊浩,打開Xcode的Devices列表,找到崩潰app的iphone。選中Device Logs坊谁,...
    CRAZYBADAM閱讀 382評論 0 0
  • 作為一名自認(rèn)為很牛逼的程序員费彼,當(dāng)你發(fā)現(xiàn)bug時(shí)你的內(nèi)心世界是這樣的: 當(dāng)你定位到bug,并花了一晚上把它改好口芍,發(fā)現(xiàn)...
    穿山甲救蛇精閱讀 12,929評論 10 74
  • CP是關(guān)于教練能力的學(xué)習(xí)的課程鬓椭。很多教練在CP課堂里學(xué)了很多理論知識回去之后不知道怎么用颠猴,有時(shí)候用著用著不小心...
    無語笑紅塵閱讀 789評論 0 0