xcode开发html5工具,5个Xcode开发调试技巧
1.Enable NSZombie Objects(開啟僵尸對象)
Enable NSZombie Objects可能是整個Xcode開發(fā)環(huán)境中最有用的調(diào)試技巧。這個技巧非常非常容易追蹤到重復釋放的問題。該技巧會以非常簡潔的方式打印指出重復釋放的類和該類的內(nèi)存地址。
怎么開啟僵尸對象呢?首先打開“Edit Scheme”(或者通過熱鍵?
現(xiàn)在我們可以關掉ARC來測試重復釋放的問題、異常和更容易產(chǎn)生的Crashs,但是即使開啟ARC,重復釋放和與內(nèi)存相關的Crashs也經(jīng)常發(fā)生。現(xiàn)在假設我們犯了一些錯誤導致了重復釋放的發(fā)生來觀察將要發(fā)生什么。
UIView*?view?=?[[[UIView?alloc]?init]?autorelease];
//...
//do?something?with?view...clearly?forgetting?that?it?has?been?autoreleased.
//
[view?release];
現(xiàn)在運行這段代碼會發(fā)生重復釋放的問題,程序將崩潰在主函數(shù),會像下面這樣:
Enable NSZombie Objects會讓調(diào)試器看起來像這樣:
這個例子看起來作用非常小,但是對于一個大工程通過Enable NSZombie Objects打印的信息是非常有用的。
2.對于所有異常添加Global BreakPoint(全局斷點)
當你的應用異常或者崩潰的時候Xcode喜歡做的一件事情是直接跳到主函數(shù),就像第一個調(diào)試技巧中用到的那個例子一樣。如果異常或者崩潰能夠停留在異常或者崩潰發(fā)生的地方那該是多好呀。幸運的是有一個方法可以做到。Xcode有一個漂亮的功能叫做異常斷點,允許我們在異常發(fā)生的時候在異常發(fā)生的地方放一個斷點。你可以指定具體的異常也可以指定所有的異常。
怎樣開啟異常斷點呢?工程切換到異常瀏覽窗口,點擊下方左側的“Add Breakpoint”按鈕,然后選擇“Add Exception Breakpoint”確保可以捕獲所有異常。
現(xiàn)在異常發(fā)生時調(diào)試器不會直接跳轉到主函數(shù)了,而是停留在了異常發(fā)生的地方。
這個斷點給了我們一個調(diào)試異常非常好的開始的點,不用我們再去遍歷代買去找異常發(fā)生的地方了。
3.Static Analyzer(靜態(tài)分析)
Static Analyzer是一個非常好的工具去發(fā)現(xiàn)編譯器警告不會提示的問題和一些個人的內(nèi)錯泄露和死存儲(不會用到的賦了值的變量)錯誤。這個方法可能大大的提高內(nèi)存使用和性能,以及提升應用的整體穩(wěn)定性和代碼質(zhì)量。
怎么打開Static Analyzer?打開Xcide的“Product”菜單,選擇Analyzer選項(或者使用熱鍵? shift B)。正像你看到的下面的截圖,Static Analyzer會捕獲任何應用內(nèi)的可能的問題然后以藍色的警告展示出來。
我們也可以設置我們的應用在我們編譯應用的時候自動開啟Static Analyzer,打開項目project文件,設置“Run Static Analyzer”為YES,如下圖:
4.Condational Breakpoints(條件斷點)
最后一個調(diào)試技巧條件斷點,這只是普通的斷點,當變量滿足一定條件時程序停止。這個調(diào)試技巧在當你想要捕獲一個循環(huán)中的變量的特定值或者一些不常發(fā)生的情況時是非常有用的,而不用你每次迭代都停止來查看。
怎樣開啟條件變量?只不過是添加一個普通斷點,然后右鍵點擊斷點選擇“Edit Breakpoint”,這時就打開了一個斷點編輯器,你可以在這里設置斷點條件(以及一些其他的斷點設置),然后選擇“Done”,這個調(diào)試技巧非常簡單吧。
5.unrecognized selector send to instancd 快速定位
在Debug菜單中Breakpoints->Create Symbolic Breakpoint
在Symbolic中填寫如下方法簽名
-[NSObject(NSObject)?doesNotRecognizeSelector:]
設置完成后再遇到類似的錯誤就會定位到具體的代碼。
總結
以上是生活随笔為你收集整理的xcode开发html5工具,5个Xcode开发调试技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vscode用鼠标滚轮_前端开发神器 V
- 下一篇: java as操作_java 对类型的基