iphone--怎样处理EXC_BAD_ACCESS
来源:互联网 发布:金克斯cos淘宝 编辑:程序博客网 时间:2024/05/13 08:50
设置Global Breakpoint定位错误代码所在位置
http://lovebirdegg.iteye.com/blog/550489
这个bug耗了我将近2天时间,原因就是 UIImage 同一个全局变量有的地方用了 alloc 有些地方则是imagewithcontentoffile,,,而最后来了个 image release,太低端错误了,代码有些时候还是得细心些!以下是找出原因的方法:(http://www.iphone-geek.cn/%E7%BC%96%E7%A8%8B/%E6%80%8E%E6%A0%B7%E5%A4%84%E7%90%86exc_bad_access)
相信很多人都知道通过NSZombies来帮助调试出现EXC_BAD_ACCESS的情况,但有时还是找不到需要的信息,那么应该怎么办呢?
下面通过一个例子来说明.下面是hello world的代码:
2
3
NSLog(@"What you say is %@",hello);
[hello release];
运行后出现EXC_BAD_ACCESS错误.但没有其他任何提示,这时候通过右击executables下的应用程序名,选择get info后,在arguments下输入环境变量(NSZombieEnabled,MallocStackLogging),如图所示:
再次运行后程序crash,如图:
这次可以看到问题是”message sent to dealloced object”了,但具体是哪个语句引起的还并不知道,于是需要在gdb上输入以下语句:
shell malloc_history pid address
那么pid和address是什么呢?再看下crash的图片结合一下我以下使用的命令,你应该很快就可以判定pid和address是从哪里来的了,我的命令是:
shell malloc_history 596 0×5f3ef80
再次运行,程序crash时会出现大量的stack trace信息,如下图是与本程序相关的:
根据这些信息大家就可以找到问题出现在[BadAccessViewController viewDidLoad] 中与 +[NSString stringWithFormat:] 有关的地方.
最后大家记得把环境变量NSZombieEnabled,MallocStackLogging删除或设置为NO,因为它们会使得内存不会被释放.
- iphone--怎样处理EXC_BAD_ACCESS
- EXC_BAD_ACCESS iphone
- iphone如何调试EXC_BAD_ACCESS
- iPhone 如何调试 EXC_BAD_ACCESS
- iphone如何调试EXC_BAD_ACCESS
- iPhone Objective-C EXC_BAD_ACCESS问题
- iPhone Objective-C EXC_BAD_ACCESS问题
- iPhone Objective-C EXC_BAD_ACCESS问题
- iPhone Objective-C EXC_BAD_ACCESS问题
- iOS EXC_BAD_ACCESS 的处理方法
- how to debug EXC_BAD_ACCESS on iPhone
- how to debug EXC_BAD_ACCESS on iPhone
- how to debug EXC_BAD_ACCESS on iPhone
- how to debug EXC_BAD_ACCESS on iPhone
- iphone 查找 EXC_BAD_ACCESS 问题根源的方法
- how to debug EXC_BAD_ACCESS on iPhone
- 【iphone开发】设置 NSZombieEnabled 定位 EXC_BAD_ACCESS 错误
- iphone开发中EXC_BAD_ACCESS抛出错误
- apue源代码的使用与编译
- sql游标
- LINUX系统管理(一)
- USB 2.0 OTG行動版規格概述
- tomcat WEB.XML 配置(struts2)
- iphone--怎样处理EXC_BAD_ACCESS
- Struts2 配置 web.xml
- Android setTag()/getTag()
- POJ-1007 DNA Sorting
- jQuery04---操作DOM对象
- uva 107 The Cat in the Hat
- 我的新家
- linux的诞生与发展
- 使用DOM解析XML文档