斷點調試是遇到問題時的必用套路,但是很多時候,普通斷點并不能滿足需求,下面簡單介紹兩種更好用的斷點。
1、條件斷點
當我們需要在循環里加斷點,并針對滿足某種條件的一些迭代時,如果用普通斷點,就得不停地“Continue program execution”,直至等到目標迭代,這樣的做法顯然太低效了。那么來看看條件斷點是怎么玩的:


2、符號斷點
**** 當我們需要調試的代碼是在框架的實現文件里時,普通斷點根本沒法添加,因為框架的實現文件是不可見的。這時候就需要用到符號斷點了,例如對于一些無法重現的crash,可以添加一個拋異常函數objc_exception_throw的符號斷點來守株待兔:


這樣,當發生crash,就可以拿到具體的堆棧了。不過,符號斷點沒法預先和特定的業務代碼綁定,例如objc_exception_throw是所有業務模塊拋異常都會調用的。