原文:
http://kenobiluh.blogspot.com/2011/04/message-sent-to-deallocated-instance.html
常常程式一長,哪邊就不小心多release了一次
這時候編譯器就只會告訴你:BAD_ACCESS,然後程式就死了
剛開始會google到去Argument加個NSZombieEnabled YES
會多吐一點東西讓你把bug除掉
今天遇到加了這個後error message變:
[CALayer release]:message sent to deallocated instance 0x4dd650
layer這麼多怎麼知道哪裡出問題阿???
google了一下才找到解法:
1.在Argument裡面加入這三個參數:
NSZombieEnabled YES
MallocStackLogging YES
MallocStackLoggingNoCompact Yes
第一項可監控deallocated的記憶體,給更多的錯誤訊息
第二項可開啟MallocStack,就知道記憶體在程式運行中被配置的歷史
第三項可以更清楚顯示指定的MallocStack狀況(一開始沒加看到快脫窗還是看不懂)
2.跑程式(建議用模擬器),開console,這時候可以注意到一開始會出現類似下列訊息:
myproject(11779) malloc: stack logs being written into /tmp/stack-logs.11779.myproject.81hXWV
表示gdb開始有在紀錄
3.讓程式跑到出錯
如果有做步驟一,應該就會看到message sent to deallocated instance的錯誤訊息
複製後面跟的位址
4.在(gdb)後面下指令info malloc-history 0x4dd650(剛剛得到的位址)
如果gdb說找不到指令,可改用shell 11779 malloc_history(11779為程式的pid)
建議在模擬器跑的原因是因為程式跑在裝置的OS上,pid是裝置給予的,要存取好像會有點問題
今天在這卡關卡了一陣
5.如果上述步驟順利的話就會看到一串比較像程式碼的東西,應該也就看得出bug了
像這次遇到的bug就是因為某個UIButton沒有給定記憶體位置,dealloc函式裡又dealloc了一次
最後當在main
這種bug單看error message最好是de得出來啦!
補記一下加入Argument的方法:
xcode 3系列:Executables→Get Info→Argument標籤
xcode 4系列:選取模擬器或裝置編譯的地方→edit scheme→Argument
(4系列真是改光光,一堆東西都不知道去哪裡找...)
分享到:
相关推荐
在ios开发过程中经常出现EXC_BAD_ACCESS错误而导致程序崩溃,这里将介绍如何利用XCode和Instrument来查找错误发生的地方,从而更好的定位
iOS开发,最郁闷的莫过于程序毫无征兆地就崩溃了,用bt命令打出调用栈,给出的是一堆系统EXC_BAD_ACCESS的信息,根本没办法定位问题出现在哪里。 首先说一下 EXC_BAD_ACCESS 这个错误,可以这么说,90%的错误来源...
Xcode iOS_10.2 (14C92)_developer_diskimage
Xcode破解_命令行,文本文档,Xcode破解_命令行,文本文档
文件目录Xcode_7.3.1_GM_Seed.dmg\5.hfs\Xcode\Xcode.app\Contents\Developer\Platforms\iPhoneOS.platform\DeviceSupport,从新发布的Xcode_7.3.1_GM_Seed.dmg镜像中提取
xcode_3.2.6_and_ios_sdk_4.3_beta.dmg.zip
Command_Line_Tools_for_Xcode_11.5 需要配合xcode11.5使用
Command_Line_Tools_for_Xcode_13.3 资源下载
xcode7_mexopts.zip
XCode4_beginning_of_line, 使主键跳转到第一个非空白代码行的Xcode插件 这个插件被重命名为 Xcode_beginning_of_line 。存储库 NAME 不会改变,但是通过 Thongchai Kolyutsakul,插件本身被重命名为 Xcode_...
Additional_Tools_for_Xcode_11.4,适用于安装macOS Xcode附加应用
Xcode 3_1_4(同样适用于3_2_1) 证书破解+iphone 3G 3_1_2真机部署iPhone App开发外包专区
Xcode 4.1_4.2 免证书(iDP)开发+真机调试+生成IPA全攻略.pdf
Apple_Xcode_8.3.3_for_for_macOS_10.12_and_later.part5_Downloadly.ir.rar
Xcode Command Line Tools, 安装Homebrew必备,无法使用命令安装时可用安装包安装
Xcode Command Line Tools, 安装Homebrew必备,无法使用命令安装时可用安装包安装
Additional_Tools_for_Xcode_12,适用于安装macOS Xcode附加应用
iphone_sdk_3.1.3_with_xcode_3.2.1__snow_leopard__read_me.pdf
xcode_6_GM.dmg
Xcode_Build_Setting_Reference