調試技巧

1.LLDB經常使用的調試命令?

  • po:print object的縮寫,表示顯示對象的文本描述,若是對象不存在則打印nil。數組

  • p:能夠用來打印基本數據類型。markdown

  • call:執行一段代碼 如:call NSLog(@"%@", @"yang")異步

  • expr:動態執行指定表達式ide

  • bt:打印當前線程堆棧信息 (bt all 打印全部線程堆棧信息)oop

  • image:經常使用來尋找棧地址對應代碼位置 如:image lookup --address 0xxxxlua

2.斷點調試

  • 條件斷點spa

    打上斷點以後,對斷點進行編輯,設置相應過濾條件。下面簡單的介紹一下條件設置:線程

    Condition:返回一個布爾值,當布爾值爲真觸發斷點,通常裏面咱們能夠寫一個表達式。指針

    Ignore:忽略前N次斷點,到N+1次再觸發斷點。調試

    Action:斷點觸發事件,分爲六種:

    • AppleScript:執行腳本。

    • Capture GPU Frame:用於OpenGL ES調試,捕獲斷點處GPU當前繪製幀。

    • Debugger Command:和控制檯中輸入LLDB調試命令一致。

    • Log Message:輸出自定義格式信息至控制檯。

    • Shell Command:接收命令文件及相應參數列表,Shell Command是異步執行的,只有勾選「Wait until done」纔會等待Shell命令執行完在執行調試。

    • Sound:斷點觸發時播放聲音。

    Options(Automatically continue after evaluating actions選項):選中後,表示斷點不會終止程序的運行。

  • 異常斷點

    異常斷點能夠快速定位不知足特定條件的異常,好比常見的數組越界,這時候很難經過異常信息定位到錯誤所在位置。這個時候異常斷點就能夠發揮做用了。

    Exception:能夠選擇拋出異常對象類型:OC或C++。

    Break:選擇斷點接收的拋出異常來源是Throw仍是Catch語句。

  • 符號斷點

    符號斷點的建立方式和異常斷點同樣同樣的,在符號斷點中能夠指定要中斷執行的方法:

    Symbol:[類名 方法名]能夠執行到指定類的指定方法中開始斷點。

3.iOS 常見的崩潰類型有哪些?

  • unrecognized selector crash

  • KVO crash

  • NSNotification crash

  • NSTimer crash

  • Container crash

  • NSString crash

  • Bad Access crash (野指針)

  • UI not on Main Thread Crash

推薦文章視頻

iOS進階模塊(逆向安防)

崩潰原理探究與攔截

相關文章
相關標籤/搜索