如何快速定位crash位置

原文地址:http://www.cnblogs.com/easonoutlook/archive/2012/12/27/2835884.html

iOS crash 崩潰問題的追蹤方法

在調(diào)試程序的時候,總是碰到crash的bug,而且一追蹤就是一些匯編的代碼,讓人特別疑惑。

一般情況下可以通過增加兩天斷點來解決此問題,方法介紹如下:

基本上有錯誤分為以下幾種類型:

signal(SIGABRT, MySignalHandler);

signal(SIGILL, MySignalHandler);

signal(SIGSEGV, MySignalHandler);

signal(SIGFPE, MySignalHandler);

signal(SIGBUS, MySignalHandler);

signal(SIGPIPE, MySignalHandler);

SIGABRT和EXC_BAD_ACCESS較為特殊,算是比較好跟進。

SIGABRT是系統(tǒng)報錯,在memery warning之后,系統(tǒng)會把程序強制退出,報的就是這個錯誤。

EXC_BAD_ACCESS 大多數(shù)時候是內(nèi)存提前釋放而引起的問題,或者訪問的方法不存在引起的。

追蹤程序的調(diào)用stacktrace的方法,跟蹤問題:

一般出錯了之后出現(xiàn)的常見界面,再熟悉不過了。。

切換到breakpoint界面,拖動底端的slider按鈕,顯示調(diào)用堆棧

雖然調(diào)用堆棧已經(jīng)出來了,但是都是一堆的匯編代碼,無法給予明確的信息。。

剩下的就是今天要講的問題:添加Symbol breakpoint? Exception breakpoint

Exception breakpoint添加 的添加步驟

一、Exception breakpoint 的添加。

1、切換到breakpoint 視圖界面

2、點擊最底端的"+"按鈕,添加Add Exception BreakPoint,這個就是捕獲所有的exception, 貌似stackoverflow上說,bad_access那種錯誤無法捕獲的,這個用于捕獲那些SIGSEGV 的錯誤。

3、添加完成之后的界面。

二、Symbolic breakpoint的添加

前兩步和一 基本是一樣的,不截圖了,只是在第二步選擇的時候選 Add Symbolic BreakPoint

第三步截圖;添加完成之后添加上objc_exception_throw

完成,添加完成只兩個斷點之后,程序中很多異常也可以捕獲了,直接定位到出問題的位置。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容