iOS中的一些調試技巧

來源:互聯網
上載者:User

程式員每天接觸最多的就是對象(自己主動New的)和bug,而在開發中掌握一些調試技巧是很有用的,今天工作中遇到了一個bug搞得心好累,晚上就寫一點自己調試中會用到的方法。

Apple的編譯器是LLVM,編譯器在開發中會協助我們很多,就像記憶體管理現在我們可以設定編譯器的ARC為有效狀態,這樣我們就在也不用像原來那樣苦逼的進行記憶體管理了。

所以就先講一個和編譯器有關的調試技巧

一.LLDB調試命令

LLDB是LLVM下的調試器,Xcode從4.0開始編譯器開始改用LLVM,相應的調試器也從gdb改為LLDB。而從 Xcode5.0開始所有工程也被自動化佈建為使用LLDB(我是沒接觸過gdb)

我們可以通過一些LLDB命令來協助我們調試。

首先怎麼調試:在項目中打個斷點我們就可以看到:

在箭頭指向的位置我們看到了lldb,這樣我們就可以輸入指令:

po---最常用的,po是一般是輸出 Objective-C 對象的,p是輸出基本類型的,但是我們發現其實都可以用。(注意輸出的資訊中帶有$1的字樣。實際上,我們每次查詢的結果會儲存在一些持續變數中($[0-9]+))這樣你可以在後面的查詢中直接使用這些值像這樣:

(lldb) po $1

dongdong

expr---可以在調試時動態執行指定運算式,並將結果列印出來。常用於在調試過程中修改變數的值

call--即是調用的意思,如call age=18,也會改掉值 2.3使用效果如下圖,但是實際中我很少使用



4.bt------列印呼叫堆疊,加 all可列印所有 thread的堆棧 5.image----- mage 命令可用於定址,有多個組合命令,如image lookup --address尋找棧地址對應的代碼位置 (當碰到給一堆堆棧錯誤時很有用)image lookup --type(找到匹配的類型,感覺多數情況下都沒用)

lldb命令還有很多,但是在iOS開發中我常用的就這麼幾個,下面介紹一下lldb命令和斷點的一些使用

二。斷點

在斷點中我們可以進行一些編輯,從而讓其達到我們的需求,使用方法可以在斷點上雙擊進入第一個選項,或者commond+option+單擊就可以進入編輯狀態 1.lldb命令和斷點的結合



當我們把底下的options打鉤時,意味著 運行到這個斷點的時,填充變數的值,然後繼續運行,並不在此處斷點進入偵錯模式,我們看到輸出已經改變了 2.條件斷點



conditon中的意思是只有符合這個條件時斷點才有作用。

總結:斷點和lldb的知識其實很多,我們在開發中瞭解其常用的方法和合理使用會大大的促進我們的開發速度和提高效率。


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.