EXC_BAD_ACCESS 查错步骤

 时间:2026-02-14 02:51:49

1、Xcode -> Product -> Scheme -> EditScheme;

增添MallocStackLogging和NSZombieEnabled两个环境变量;

分别用于记录内存alloc和监控zombie内存.

EXC_BAD_ACCESS 查错步骤

2、重新运行项目至崩溃点. 此时程序会打印额外的关于内存的日志

程序崩溃点得到如下日志:

--------------------------------------------------------------------------------------------------

2014-09-30 10:24:38.753 P2PCamLive[280:20505] 

*** -[UILabel release]: message sent to deallocated instance 0x17eb9800

--------------------------------------------------------------------------------------------------

可知, 是由于UILabel dealloc时崩溃, 基本确定是过度释放内存导致.

3、打开Instruments工具:

Xcode -> Open Developer Tool -> Instruments, 

选择Zombies类型.

EXC_BAD_ACCESS 查错步骤

4、重新启动运行Project, 先不要执行到崩溃点.

在打开的Instruments工具中choose要检查的程序名称;

然后点击Instruments左上角的record按钮, 开始记录内存使用情况.

EXC_BAD_ACCESS 查错步骤

EXC_BAD_ACCESS 查错步骤

5、继续执行程序至崩溃点.

程序执行到第40秒报出zombie Messaged错误;

点击图中圈选的">"查看内存详情.

EXC_BAD_ACCESS 查错步骤

6、分析内存调用详情:

排除操作系统retain, release的部分,

可知是由于CameraLiveViewController执行dealloc, 

对内存0x180d5420多调用了release.

EXC_BAD_ACCESS 查错步骤

7、综合以上结果:

可知是存在于CameraLiveViewController中的一个UILabel多执行了release.

此时可添加代码对CameraLiveViewController中的可疑UILabel打印日志.

重新执行上述过程, 对比打印UILabel与Zobmie内存的地址, 

从而定位出错位置.

EXC_BAD_ACCESS 查错步骤

  • 如何可以保存莲雾更长时间
  • 美味番石榴酸,好吃得让人流口水
  • 股票“转”,“送”,”派“的含义
  • 国内六大海底世界陪你畅游海洋
  • 薯片炸鸡怎么做
  • 热门搜索
    什么快递便宜 什么花吸甲醛效果最好 汇兑是什么意思 years是什么意思 sign是什么意思 校训是什么 小白加小白等于什么 让胜是什么意思 travel是什么意思 什么的天空填空词语