解析IOS控制臺(tái)利用GDB命令查看報(bào)錯(cuò)堆棧
解析IOS控制臺(tái)利用GDB命令查看報(bào)錯(cuò)堆棧是本文要介紹的內(nèi)容,在ios開(kāi)發(fā)中,如果提前釋放一個(gè)指針的內(nèi)存,在以后還繼續(xù)使用這個(gè)指針,那么程序會(huì)立刻crash掉,而且很難有報(bào)錯(cuò)信息,我以前都是靠猜測(cè)去判斷錯(cuò)誤的原因,我們應(yīng)該利用工具去找到錯(cuò)誤的地方,然后快速準(zhǔn)確的定位到錯(cuò)誤地方,及其錯(cuò)誤原因,***進(jìn)行改進(jìn)。
其實(shí)ios控制臺(tái),提供這種機(jī)制,如果你選擇debug模式,在程序crash之后,在控制臺(tái)輸入bt,就可以顯示crash堆棧:
- Program received signal: “EXC_BAD_ACCESS”.
 - warning: Unable to read symbols for /Developer/ios4.2.1/Platforms/iPhoneOS.platform/DeviceSupport/
 - 4.2.1 (8C148)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found).
 - (gdb) bt
 - #0 0x33a06464 in objc_msgSend ()
 - #1 0x3139de2e in -[UIImageView setImage:] ()
 - #2 0x00009ecc in -[RoundMenuView touchesEnded:withEvent:]
 - (self=0x29e140, _cmd=0x316b1a7b, touches=0x2e1050, event=0x2424f0) at /Users/wangjun/workspace/iphone/Classes/RoundMenuView.m:130
 - #3 0x313b1354 in -[UIWindow _sendTouchesForEvent:] ()
 - #4 0x313b0cce in -[UIWindow sendEvent:] ()
 - #5 0x3139bfc6 in -[UIApplication sendEvent:] ()
 - #6 0x3139b906 in _UIApplicationHandleEvent ()
 - #7 0x31eecf02 in PurpleEventCallback ()
 - #8 0x304236fe in __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ ()
 - #9 0x304236c2 in __CFRunLoopDoSource1 ()
 - #10 0x30415f7c in __CFRunLoopRun ()
 - #11 0x30415c86 in CFRunLoopRunSpecific ()
 - #12 0x30415b8e in CFRunLoopRunInMode ()
 - #13 0x31eec4aa in GSEventRunModal ()
 - #14 0x31eec556 in GSEventRun ()
 - #15 0x313cf328 in -[UIApplication _run] ()
 - #16 0x313cce92 in UIApplicationMain ()
 - #17 0x00002da2 in main (argc=1, argv=0x2fdff44c) at /Users/wangjun/workspace/iphone/main.m:19
 - kill
 - quit
 
利用堆棧信息,就可以準(zhǔn)確的定位到錯(cuò)誤地方。
小結(jié):解析IOS控制臺(tái)利用GDB命令查看報(bào)錯(cuò)堆棧的內(nèi)容介紹完了,希望本文對(duì)你有所幫助。















 
 
 

 
 
 
 