日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XCode的控制台调试命令

發布時間:2024/7/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XCode的控制台调试命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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會自動輸出最后的一次調用堆棧。如下:

[cpp]?view plaincopyprint?
  • *?thread?#1:?tid?=?0x1f03,?0x0132edee?CoreFoundation`___forwarding___?+?206,?stop?reason?=?EXC_BREAKPOINT?(code=EXC_I386_BPT,?subcode=0x0)??
  • ????frame?#0:?0x0132edee?CoreFoundation`___forwarding___?+?206??
  • ????frame?#1:?0x0132ecb2?CoreFoundation`_CF_forwarding_prep_0?+?50??
  • ????frame?#2:?0x00002e60?testMVC`-[ViewCtrl2?touchesBegan:withEvent:]?+?128?at?ViewCtrl2.m:40??
  • ????frame?#3:?0x013c9e99?CoreFoundation`-[NSObject?performSelector:withObject:withObject:]?+?73??
  • ????frame?#4:?0x000ffc49?UIKit`forwardTouchMethod?+?268??
  • ????frame?#5:?0x000ffb38?UIKit`-[UIResponder?touchesBegan:withEvent:]?+?30??
  • ????frame?#6:?0x0003a2cf?UIKit`-[UIWindow?_sendTouchesForEvent:]?+?272??
  • ????frame?#7:?0x0003a5e6?UIKit`-[UIWindow?sendEvent:]?+?273??
  • ????frame?#8:?0x00020dc4?UIKit`-[UIApplication?sendEvent:]?+?464??
  • ????frame?#9:?0x00014634?UIKit`_UIApplicationHandleEvent?+?8196??
  • ????frame?#10:?0x012b2ef5?GraphicsServices`PurpleEventCallback?+?1274??
  • ????frame?#11:?0x0139c195?CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__?+?53??
  • ????frame?#12:?0x01300ff2?CoreFoundation`__CFRunLoopDoSource1?+?146??
  • ????frame?#13:?0x012ff8da?CoreFoundation`__CFRunLoopRun?+?2218??
  • ????frame?#14:?0x012fed84?CoreFoundation`CFRunLoopRunSpecific?+?212??
  • ????frame?#15:?0x012fec9b?CoreFoundation`CFRunLoopRunInMode?+?123??
  • ????frame?#16:?0x012b17d8?GraphicsServices`GSEventRunModal?+?190??
  • ????frame?#17:?0x012b188a?GraphicsServices`GSEventRun?+?103??
  • ????frame?#18:?0x00012626?UIKit`UIApplicationMain?+?1163??
  • ????frame?#19:?0x000026fa?testMVC`main?+?170?at?main.m:16??
  • ????frame?#20:?0x00002645?testMVC`start?+?53??

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

    [cpp]?view plaincopyprint?
  • 命令????????????????????????解釋????
  • 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??????????????????查看變理的數據類型???

  • 使用lldb調試工具,結合NSZombieEnabled?一起使用,實在是查找crash的一大利器啊,很是方便!


    本文轉載自:http://blog.csdn.net/likendsl/article/details/7576549

    總結

    以上是生活随笔為你收集整理的XCode的控制台调试命令的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。