iOS 开发之EXC_BAD_ACCESS异常分析
来源:互联网 发布:男生喜欢内衣颜色知乎 编辑:程序博客网 时间:2024/05/18 02:41
一:EXC_BAD_ACCESS异常介绍
在调试objective-c程序的过程中,程序crash的现象在所难免,但大部分的错误都能够通过显示的错误原因结合NSLog的方式来解决,比如NSInvalidArgumentException(名字就能看出来是什么错误)等,实在搞不定还有debug这个杀手锏。但唯独EXC_BAD_ACCESS这个异常太难处理了,名字看不出来是什么原因,其他提示也没有,debug都搞不定。
先来介绍下EXC_BAD_ACCES:这个异常基本上是内存使用不当造成的,而且90%的错误来源在于对一个已经释放的对象进行release操作。
二:分析方法
为工程运行时加入 NSZombieEnabled 环境变量,并设为启用,则在 EXC_BAD_ACCESS 发生时,XCode 的 Console 会打印出问题描述。并同时添加MallocStackLogging和MallocStackLoggingNoCompact两个环境变量,来启用malloc记录
三:输出信息
只要添加了NSZombieEnabled变量,在发生EXC_BAD_ACCESS会在concole中打印出错误原因,绝大多数都会出现这个信息
ok,很显然,问题是来源就是对一个已经释放的对象进行release操作(这里就是HotCategoryViewController了)这样基本上可以定位出来是在哪里出现了错误,错误的对象是什么,但在很多情况下,这还不够。接下来还有一招,在concole里面通过gdb的调试命令来看下当前实例从alloc到free的整个生命周期的调用过程在concole里面敲:shell malloc_history App_PID Object_instance对应我们的例子为:2011-10-27 15:12:40.061 iAliexpress[177:707] *** -[HotCategoryViewController setTitle:]: message sent to deallocated instance 0x3a89c0这里就应该输入:shell malloc_history 177 0x3a89c0其中App_PID为当前的进程号(若你是用模拟器调试,没问题;若你是用真机调试,抱歉,你看到的进程号是手机里的,你这里拿来没用),Object_instance为该实例对象的id。回车后你会得到这样的信息
最后,希望打印出来的信息能对你有帮助(大多数情况下能帮你定位问题)
转自:http://blog.csdn.net/a394318511/article/details/7927296
0 0
- iOS 开发之EXC_BAD_ACCESS异常分析
- iOS 开发之EXC_BAD_ACCESS异常分析
- iOS 开发之EXC_BAD_ACCESS异常分析
- iOS 开发之EXC_BAD_ACCESS异常分析
- iOS开发EXC_BAD_ACCESS异常介绍
- iOS - 非ARC中EXC_BAD_ACCESS异常分析
- iOS 异常EXC_BAD_ACCESS
- IOS开发:Program received signal: “EXC_BAD_ACCESS" 问题分析
- IOS开发(46)之设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误
- IOS开发之设置 NSZombieEnable 定位EXC_BAD_ACCESS错误
- IOS开发(46)之设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误
- iOS开发 内存报错 EXC_BAD_ACCESS
- HBuilder插件开发IOS遇EXC_BAD_ACCESS错误
- iOS开发之Xcode常用调试技巧总结,NSLog,LLDB, Breakpoint,EXC_BAD_ACCESS,Address Sanitizer
- NSLog,LLDB, Breakpoint,EXC_BAD_ACCESS,Address Sanitizer ,iOS开发之Xcode常用调试技巧总结
- IOS EXC_BAD_ACCESS
- IOS EXC_BAD_ACCESS
- iOS exc_bad_access
- Myeclise8.5卸载后重装失败的解决方案
- 安卓杂记(四)利用自定义的PolyBezier()函数将一系列散点绘制成光滑曲线(二)
- Review-SBT(Bzoj3224)
- poj 1852 ants
- 数据挖掘中所需的概率论与数理统计知识
- iOS 开发之EXC_BAD_ACCESS异常分析
- Ruby—关于Button跳转
- OpenMP多线程编程技术
- MATLAB优化工具箱使用
- HDU-求大数的阶乘
- pcs常用命令
- 杨氏数组查找
- POJ 2533 Longest Ordered Subsequence
- HDOJ 1005 Number Sequence