原文地址: http://blog.csdn.net/likendsl/article/details/7576549
XCode4.0以后,編譯器換成了LLVM 編譯器 2.0
與以前相比,更加強大:
1.LLVM 編譯器是下一帶開源的編譯技術.完全支持C, Objective-C, 和 C++.
2.LLVM 速度比 GCC快兩倍,建立的程序也會運行的更快. 因為它更好的利用現代的芯片的結構.
3.LLVM和Xcode 4完全的整合在一起.包括關鍵字高亮,代碼完整性等全都是由LLVM語法分析器來分析的. 這樣可以在編輯的時候就可以很好的了解你的代碼.
編譯器進化之后,控制台調試命令前綴,也由原來的gdb更改成了lldb,所以當你看到控制台沒有gdb而出現lldb的時候,不用驚慌,因為我們以前常用的調試命令依然可以使用:
使用前提:
1.既然是調試命令,理所當然的,程序模式應該選擇Debug模式。
2.在Debug模式下,如果你的程序在運行中崩潰(Crash)掉,那么恭喜你,使用lldb調試的機會來了。(還有一種方法就是 打斷點 程序就會進入調試狀態,可以在命令行輸入一些命令)
符合以上兩個條件之后,控制台(即日志輸出窗口All Output)會自動打出一個(lldb)命令,你在其后輸入bt,回車。
恭喜你,這時Xcode會自動輸出最后的一次調用堆棧。如下:
其實說實話這個 真的挺難找的 我自己在百度上搜了半天的 Xcode命令行指令 但是出來的都不是我想要的結果 ,今天突然就看到一個關於這個的博客,看了之后 我也將指令 在命令行里面敲了 試試 。確實很有用! 但是 還有很多更厲害的功能我還沒有研究出來 ,慢慢發現 ,慢慢更新把~~
- 命令 解釋
- 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 查看變理的數據類型
如果能將這個運用的熟練的話 ,那么你的層次就會上升另一個檔次,在找bug方面 解決EXC_BAD_ACCESS錯誤的一種方法--NSZombieEnabled 一起使用,實在是查找crash的一大利器啊,很是方便!!
最后給打擊推薦幾個 網站
- CocoaDev,個人覺得講Cocoa技術十分專業的網站之一,下面的鏈接詳細講了講NSZombieEnable的原理。http://www.cocoadev.com/index.pl?NSZombieEnabled
- 蘋果官方的Mac OS X Debugging Magic,詳細講述了最為一個高級蘋果程序員應該具備的調試技巧 http://developer.apple.com/library/mac/#technotes/tn2004/tn2124.html
- 其實還可以在Instruments中開啟NSZombie選項,這樣就可以在Instruments中直接查看crash時候的callstack了:http://www.markj.net/iphone-memory-debug-nszombie/