使用ExceptionsBreakpoint遇到的問題

Xcode有個(gè)比較厲害而又經(jīng)常被忽略的斷點(diǎn)功能—Exceptions Breakpoint。
使用Exceptions Breakpoint的時(shí)候發(fā)現(xiàn),如果將Exceptions設(shè)置為All,會(huì)導(dǎo)致應(yīng)用在main()函數(shù)里面崩潰,避免這個(gè)問題的方法是將Exception更改為Objective-C.


將All更改為Objective-C

在stack overflow看到的解釋如下:

stack overflow看到的解釋

附鏈接:http://stackoverflow.com/questions/26127004/xcode-throws-an-exception-in-main-in-ios-8-with-all-exceptions-breakpoint

About Exceptions Breakpoint

蘋果官方文檔只介紹了這個(gè)斷點(diǎn)的使用方法,沒對(duì)這個(gè)斷點(diǎn)的功能做具體的介紹。
當(dāng)應(yīng)用發(fā)生諸如數(shù)組越界、null值、對(duì)象重復(fù)釋放等問題導(dǎo)致的崩潰時(shí),Xcode通常只會(huì)跳到main()函數(shù)。而Exceptions Breakpoint會(huì)在異常發(fā)生的時(shí)候在異常的地方放一個(gè)斷點(diǎn),調(diào)試器不會(huì)再跳到main()函數(shù),而是停留在了異常發(fā)生的地方,而且大多數(shù)情況下Exceptions Breakpoint都會(huì)打印異常消息。碉堡了!

其他調(diào)試技巧備忘

1、啟用NSZombieEnabled ——— 定位野指針問題,只能檢測(cè)已經(jīng)釋放了對(duì)象的地址。
2、靜態(tài)分析 ——— 可以定位部分內(nèi)存泄露、空指針問題,比如傳入了null指針。
3、Instruments ——— 使用子工具Leaks可以定位循環(huán)引用問題。
4、block引用循環(huán)問題通常難以用工具檢測(cè)出來,可以在對(duì)象的- (void)dealloc方法中打印日志來判斷對(duì)象是否正常釋放。
5、條件斷點(diǎn) ——— 在普通斷點(diǎn)中設(shè)置一定的條件,滿足條件時(shí)斷點(diǎn)才會(huì)觸發(fā),適用于循環(huán)結(jié)構(gòu)中定位到具體某次循環(huán)。
6、符號(hào)斷點(diǎn) ——— 可以用來快速定位unrecognized selector send to instance問題。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 轉(zhuǎn)載 與調(diào)試器共舞 - LLDB 的華爾茲: https://objccn.io/issue-19-2/ 推薦:i...
    F麥子閱讀 3,357評(píng)論 0 10
  • 斷點(diǎn)(轉(zhuǎn)載) http://mp.weixin.qq.com/s?__biz=MzA4ODk0NjY4NA==&m...
    liwendong閱讀 1,435評(píng)論 0 0
  • *****************************(轉(zhuǎn)載自此網(wǎng)址)********************...
    葉舞清風(fēng)閱讀 1,238評(píng)論 0 5
  • LLDB的Xcode默認(rèn)的調(diào)試器,它與LLVM編譯器一起,帶給我們更豐富的流程控制和數(shù)據(jù)檢測(cè)的調(diào)試功能。平時(shí)用Xc...
    CoderSC閱讀 1,381評(píng)論 0 2
  • LLDB的Xcode默認(rèn)的調(diào)試器,它與LLVM編譯器一起,帶給我們更豐富的流程控制和數(shù)據(jù)檢測(cè)的調(diào)試功能。平時(shí)用Xc...
    小笨狼閱讀 20,600評(píng)論 31 186