成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

XCode調試技巧之EXC_BAD_ACCESS中BUG解決

移動開發 iOS
本文介紹的是XCode調試技巧之EXC_BAD_ACCESS中BUG解決,如何解決,來看詳細內容。

XCode調試技巧之EXC_BAD_ACCESS中BUG解決是本文要介紹的內容,在iphone開發的時候EXC_BAD_ACCESS這個bug時不容易找到原因的,在網上找到的3個關于這個問題的方法,希望可以幫到你,我自己試了一下第一中方法,效果還不錯

首先說一下 EXC_BAD_ACCESS 這個錯誤,可以這么說,90%的錯誤來源在于對一個已經釋放的對象進行release操作。

1. 重寫object的respondsToSelector方法,現實出現EXEC_BAD_ACCESS前訪問的最后一個object

有時程序崩潰根本不知錯誤發生在什么地方。比如程序出現EXEC_BAD_ACCESS的時候,雖然大部分情況使用設定 NSZombieEnabled環境變量可以幫助你找到問題的所在,但少數情況下,即使設定了NSZombieEnabled環境變量,還是不知道程序崩 潰在什么地方。那么就需要使用下列代碼進行幫助了:

  1.  #ifdef _FOR_DEBUG_  
  2. -(BOOL) respondsToSelector:(SEL)aSelector {  
  3.     printf("SELECTOR: %s\n", [NSStringFromSelector(aSelector) UTF8String]);  
  4.     return [super respondsToSelector:aSelector];  
  5. }  
  6. #endif  

你需要在每個object的.m或者.mm文件中加入上面代碼,并且在 other c flags中加入-D _FOR_DEBUG_(記住請只在Debug Configuration下加入此標記)。這樣當你程序崩潰時,Xcode的console上就會準確地記錄了最后運行的object的方法。

2. 通過NSZombieEnabled

相信很多人都知道通過NSZombies來幫助調試出現EXC_BAD_ACCESS的情況,但有時還是找不到需要的信息,那么應該怎么辦呢?

下面通過一個例子來說明.下面是hello world的代碼:

  1. NSString* hello = [NSString stringWithFormat:@"Hello world"];  
  2. NSLog(@"What you say is %@",hello);  
  3. [hello release];  

運行后出現EXC_BAD_ACCESS錯誤.但沒有其他任何提示,這時 候通過右擊executables下的應用程序名,選擇get info后,在arguments下輸入環境變量(NSZombieEnabled,MallocStackLogging)

再次運行后程序crash,如圖:(單擊放大)

XCode調試技巧之EXC_BAD_ACCESS中BUG解決

這次可以看到問題是”message sent to dealloced object”了,但具體是哪個語句引起的還并不知道,于是需要在gdb上輸入以下語句:

  1. shell malloc_history pid address 

那么pid和address是什么呢?再看下crash的圖片結合一下我以下使用的命令,你應該很快就可以判定pid和address是從哪里來的了,我的命令是:

  1. shell malloc_history 596 0×5f3ef80 

再次運行,程序crash時會出現大量的stack trace信息,如下圖是與本程序相關的:

XCode調試技巧之EXC_BAD_ACCESS中BUG解決

根據這些信息大家就可以找到問題出現在[BadAccessViewController viewDidLoad] 中與 +[NSString stringWithFormat:] 有關的地方.

最后大家記得把環境變量NSZombieEnabled,MallocStackLogging刪除或設置為NO,因為它們會使得內存不會被釋放.

3、設置全局斷點快速定位問題代碼所在行

XCode調試技巧–設置全局斷點快速定位問題代碼所在行[zz]

小結:XCode調試技巧之EXC_BAD_ACCESS中BUG解決的內容介紹完了,希望本文對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2013-04-18 10:19:40

iOS開發Xcode調試

2013-03-29 13:17:53

XCode調試技巧iOS開發

2012-05-21 10:13:05

XCode調試技巧

2011-07-20 14:31:56

XCode User Scrip 腳本

2011-08-08 17:05:02

XCode UserScript 腳本

2014-03-12 09:52:17

XcodeCode Snippe

2023-10-11 13:32:30

2011-02-22 16:09:53

Eclipse調試

2013-12-17 16:01:02

iOSXcodeInstruments

2011-07-28 14:31:55

Xcode 調試 異常

2011-08-11 16:31:08

XCode

2013-05-20 15:04:02

Android調試查看日志Android開發

2011-07-26 14:44:53

調試 Xcode

2013-04-18 09:55:56

iOS開發Xcode調試斷點

2011-08-01 17:50:28

Xcode

2013-07-31 13:36:07

Windows PhoVS調試技巧Windows Pho

2010-09-02 11:03:48

CSS

2011-08-04 18:09:32

Xcode 技巧 文檔

2023-08-31 16:43:46

軟件開發調試

2011-08-19 15:16:41

XCodeUserScripts腳本
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中国av在线免费观看 | 精品一区二区三区四区五区 | 在线视频一区二区三区 | 国产福利视频在线观看 | 午夜影晥 | 夜夜摸天天操 | 超碰人人91 | 国产综合精品一区二区三区 | 精品国产欧美日韩不卡在线观看 | 天天操妹子 | 国产婷婷色一区二区三区 | 在线观看日本高清二区 | 亚洲欧洲成人 | 在线免费观看a级片 | 羞羞视频免费观 | 欧美激情视频一区二区三区免费 | 久久中文视频 | 亚洲一区在线免费观看 | 久久国内精品 | 亚洲v日韩v综合v精品v | 国产一区中文字幕 | 在线国产一区 | 中文字幕av网| 一区二区三区四区免费视频 | 成人啊啊啊| 精品不卡 | 久久精品国产精品青草 | 久久免费精品 | 国产精品视频一区二区三区 | 精品欧美乱码久久久久久1区2区 | 欧美色人| 亚洲精品久久久久久久久久久久久 | 国产精品视频在线播放 | 理论片免费在线观看 | 一区二区av| 99re在线视频免费观看 | 亚洲综合无码一区二区 | 亚洲三级在线 | 中文字幕精品一区二区三区精品 | 久久激情av | 久久不卡区 |