iOS 開發常用的調試命令

來源:互聯網
上載者:User

標籤:des   class   blog   code   http   tar   

XCode4.0以後,編譯器是LLVM,控制台調試命令首碼是lldb

第一、LLVM簡介

LLVM是構架編譯器(compiler)的架構系統,以C++編寫而成,用於最佳化以任意程式語言編寫的程式的編譯時間(compile-time)、連結時間(link-time)、已耗用時間(run-time)以及空閑時間(idle-time),對開發人員保持開放,併兼容已有指令碼。

第二、 對關注編譯技術的開發人員,LLVM提供了很多優點:

 

現代化的設計LLVM的設計是高度模組化的,使得其代碼更為清晰和便於排查問題所在。語言無關的中間代碼一方面,這使得透過LLVM能夠將不同的語言相互連結起來;也使得LLVM能夠緊密地與IDE互動和整合。另一方面,發布中間代碼而非目標代碼能夠在目標系統上更好地發揮其潛能而又不傷害可調試性(i.e. 在目標系統上針對原生硬體環境產生目標代碼,但又能夠直接通過中間代碼來進行行級調試)作為工具和函數庫使用LLVM提供的工具可以比較容易地實現新的程式設計語言的最佳化編譯器或VM,或為現有的程式設計語言引入一些更好的最佳化/調試特性。第三、使用前提:

1.既然是調試命令,理所當然的,程式模式應該選擇Debug模式。

2.在Debug模式下,如果你的程式在運行中崩潰(Crash)掉,那麼恭喜你,使用lldb調試的機會來了。

符合以上兩個條件之後,控制台(即日誌輸出視窗All Output)會自動打出一個(lldb)命令,此時你就可以進行調試。

第四、常用的調試命令

 

po

 

po是print-object的簡寫,可用來列印所有NSObject對象。sample code:

 

(lldb) po self.view

<UITableView: 0xdb00200; frame = (0 20; 320 460); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x8b3ca50>; layer = <CALayer: 0x8b3c110>; contentOffset: {0, 0}>

(lldb) po self

<RootViewController: 0x9813e90>

 

 

p

 

p是print的簡寫,可以用來列印所有的簡單類型,如int, float,結構體等。sample code:

 

 

[objc] view plaincopyprint?
  1. ItemData item;  
  2.         item.nMainID=1;  
  3.         item.nSubID=2;  
  4.         item.pszTitle=@"hello";  
  5.       
  6.         NSRect rect=NSMakeRect(0, 10, 10, 10);  

   調試命令及輸出結果:

 

 

(lldb) print rect

(NSRect) $0 = (x=0, y=10), (width=10, height=10)

(lldb) p item

(ItemData) $3 = {

  pszTitle = 0x0000000100001370 @"hello"

  nMainID = 1

  nSubID = 2

}

call

call即是調用的意思。其實上述的po和p也有調用的功能。因此一般只在不需要顯示輸出,或是方法無傳回值時使用call

bt

這時Xcode會自動輸出最後的一次呼叫堆疊

 

當然還有其他的命令(和gdb命令通用):

 

 

[cpp] view plaincopy 命令                        解釋  break NUM               在指定的行上設定斷點。    bt                      顯示所有的調用棧幀。該命令可用來顯示函數的調用順序。    clear                   刪除設定在特定源檔案、特定行上的斷點。其用法為:clear FILENAME:NUM。    continue                繼續執行正在調試的程式。該命令用在程式由於處理訊號或斷點而導致停止運行時。    display EXPR            每次程式停止後顯示運算式的值。運算式由程式定義的變數組成。    file FILE               裝載指定的可執行檔進行調試。    help NAME               顯示指定命令的協助資訊。    info break              顯示當前斷點清單,包括到達斷點處的次數等。    info files              顯示被調試檔案的詳細資料。    info func               顯示所有的函數名稱。    info local              顯示當函數中的局部變數資訊。    info prog               顯示被偵錯工具的執行狀態。    info var                顯示所有的全域和靜態變數名稱。    kill                    終止正被調試的程式。    list                    顯示原始碼段。    make                    在不退出 gdb 的情況下運行 make 工具。    next                    在不逐步執行進入其他函數的情況下,向前執行一行原始碼。    print EXPR              顯示運算式 EXPR 的值。     print-object            列印一個對象    print (int) name      列印一個類型    print-object [artist description]   調用一個函數    set artist = @"test"    設定變數值    whatis                  查看變理的資料類型  註:借鑒自richard_如風的專欄和liangguo03的專欄的部落格

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.