iOS

先上幾張最近bugly搜集到的崩潰信息的圖:

1
2
3
4
5
6
7
8

起初遇到這種情況都會覺得不可思議巢寡,后來發(fā)現這就是野指針造成的豪嚎。

我覺得平時開發(fā)xcode崩潰信息查看的并不多,所以直接說符號表相關的。

xcode崩潰信息查看:xcode->Window->Organizer->Crashes


崩潰分析之符號表:

符號表是編譯生成的.app的同目錄下生成的.dSYM文件,.dSYM是一個目錄迟隅,在子目錄中包含了一個16進制的保存函數地址映射信息的中轉文件,所有Debug的symbols都在這個文件中(包括文件名励七、函數名智袭、行號等),所以也稱之為調試符號信息文件掠抬。

通過符號表就能找到對應的能夠直觀看到的方法名之類


這里重點說野指針:

1.據下面這篇文章統(tǒng)計的 野指針概率大概1/5吼野,而且多數是一些奇奇怪怪的崩潰

https://blog.csdn.net/tencent_bugly/article/details/46277055


https://blog.csdn.net/tangaowen/article/details/46830019

https://msd.misuland.com/pd/300175265395380224


https://blog.csdn.net/tangaowen/article/details/46830049


http://www.reibang.com/p/9fd4dc046046?utm_source=oschina-app



野指針是指指向一個已刪除的對象或未申請訪問受限內存區(qū)域的指針。本文說的Obj-C野指針两波,說的是Obj-C對象釋放之后指針未置空瞳步,導致的野指針(Obj-C里面一般不會出現為初始化對象的常識性錯誤)。


既然是訪問已經釋放的對象為什么不是必現Crash呢雨女?

因為dealloc執(zhí)行后只是告訴系統(tǒng)谚攒,這片內存我不用了,而系統(tǒng)并沒有就讓這片內存不能訪問氛堕。

現實大概是下面幾種可能的情況:

1.???對象釋放后內存沒被改動過馏臭,原來的內存保存完好,可能不Crash或者出現邏輯錯誤(隨機Crash)。

2.???對象釋放后內存沒被改動過括儒,但是它自己析構的時候已經刪掉某些必要的東西绕沈,可能不Crash、Crash在訪問依賴的對象比如類成員上帮寻、出現邏輯錯誤(隨機Crash)乍狐。

3.???對象釋放后內存被改動過,寫上了不可訪問的數據固逗,直接就出錯了很可能Crash在objc_msgSend上面(必現Crash浅蚪,常見)。

4.???對象釋放后內存被改動過烫罩,寫上了可以訪問的數據惜傲,可能不Crash、出現邏輯錯誤贝攒、間接訪問到不可訪問的數據(隨機Crash)盗誊。

5.???對象釋放后內存被改動過,寫上了可以訪問的數據隘弊,但是再次訪問的時候執(zhí)行的代碼把別的數據寫壞了哈踱,遇到這種Crash只能哭了(隨機Crash,難度大梨熙,概率低)?汀!

6.???對象釋放后再次release(幾乎是必現Crash串结,但也有例外哑子,很常見)舅列。


針對野指針的解決方案:

讓野指針被訪問時立馬崩潰肌割,也就是一定程度的增加崩潰率

1.xcode方式:這種方式對于測試人員是不合適的,因為依賴xcode

malloc scribble選項

Xcode幫我們 在 對象釋放后帐要,隨機填入不可訪問的數據把敞,導致野指針立即崩潰



2.手動實現:

hook c語言 free函數的方式,現成的第三方庫 fishhook

在hook的函數中 填充0x55(Xcode 幫我們填充的這個榨惠,用方式1崩潰時能發(fā)現)

void safe_free(void* p){

? ? size_tmemSiziee=malloc_size(p);

? ? memset(p,0x55, memSiziee);

? ? orig_free(p);

? ? return;

}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末奋早,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子赠橙,更是在濱河造成了極大的恐慌耽装,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件期揪,死亡現場離奇詭異掉奄,居然都是意外死亡,警方通過查閱死者的電腦和手機凤薛,發(fā)現死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門姓建,熙熙樓的掌柜王于貴愁眉苦臉地迎上來诞仓,“玉大人,你說我怎么就攤上這事速兔∈茫” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵涣狗,是天一觀的道長谍婉。 經常有香客問我,道長镀钓,這世上最難降的妖魔是什么屡萤? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮掸宛,結果婚禮上死陆,老公的妹妹穿的比我還像新娘。我一直安慰自己唧瘾,他們只是感情好措译,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著饰序,像睡著了一般领虹。 火紅的嫁衣襯著肌膚如雪求豫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天蝠嘉,我揣著相機與錄音,去河邊找鬼蚤告。 笑死努酸,一個胖子當著我的面吹牛,可吹牛的內容都是我干的杜恰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼舔涎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逗爹?” 一聲冷哼從身側響起亡嫌,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后昼伴,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡价涝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年持舆,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逸寓。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖竹伸,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情吧享,我是刑警寧澤譬嚣,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站拜银,受9級特大地震影響,放射性物質發(fā)生泄漏尼桶。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一牲尺、第九天 我趴在偏房一處隱蔽的房頂上張望幌蚊。 院中可真熱鬧溃卡,春花似錦、人聲如沸瘸羡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卷仑。三九已至,卻和暖如春锡凝,著一層夾襖步出監(jiān)牢的瞬間垢啼,已是汗流浹背窜锯。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工锚扎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驾孔。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓惯疙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親螟碎。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

推薦閱讀更多精彩內容

  • 崩潰分析 崩潰日志(crash log) 根據符號表來監(jiān)測崩潰位置 什么是符號表符號表就是指在Xcode項目編譯后...
    紙簡書生閱讀 5,715評論 0 17
  • 版權聲明本文轉自網易杭州前端技術部公眾號,由作者授權發(fā)布酥郭。 前言 大白(Baymax),迪士尼動畫《超能陸戰(zhàn)隊》中...
    XueYongWei閱讀 2,033評論 2 11
  • 一. 前言 最近被指派去解決一些線上的崩潰問題惜姐,經常遇到野指針導致的崩潰椿息。相對于其他的原因引起的崩潰來說歹袁,野指針導...
    林大鵬閱讀 20,446評論 24 136
  • 1. 看到反對者寝优,第一讓我想到了我的客戶条舔,由于每天都會接觸到不同層次的客戶乏矾,每天都會給他們做各種的風險規(guī)劃方案迁杨,不...
    Sherry001閱讀 107評論 0 0
  • 日課11: 請描述你生活中你積累的事物產生的復利效應凄硼。 復利效應,對于我摊沉,可能最大的便是早起。 也許從小養(yǎng)成的習慣...
    旭珍閱讀 276評論 0 0