thread 1:exc_bad_access(code=1,adress=0x10)

描述

在使用异常断点发现,项目crash的位置在main函数中,提示thread 1:exc_bad_access(code=1,adress=0x10),然后设置Product->Scheme->Edit Scheme->Run ???.app右边的选项中,选中Enable Zombie Objects,后断点在汇编语法中,提示thread 1:exc_breakpoint(code=1,subcode=0x189a6clcc)

解决方法

由于勾选了Enable Zombie Objects,虽然出现断点,但是没有打印信息,切换到Tab Aguments 配置环境变量MallocStackLoggingNoCompact,NSZombieEnabled,MallocStackLogging; 注意:这时候需要在模拟器中运行app,重现刚刚的crash过程。你会发现在控制台中输出一些数据,最起码有message sent to deallocated instance 0x7fbc1b52bc00;在我的项目中 ,打印出***** -[XYHStoreDetailViewController respondsToSelector:]: message sent to deallocated instance 0x7fbc1b52bc00**

拿到了这个指针之后,在终端中输入 malloc_history 40888 0x7fbc1b52bc00 |grep 0x7fbc1b52bc00,注意这个40888是当前进程的id,这个方法是这篇博客介绍的, 但是我在执行时,提示40888这个进程没有运行,说明每个电脑的进程id可能不一样。提示
malloc_history cannot examine process 40888 (with name like '40888') because it no longer appears to be running.

如果不知道当前进程id怎么办呢,我是根据打印出来的信息去解决的[XYHStoreDetailViewController respondsToSelector:];在我的项目中,我找到这个类,这是我触发crash方法的类,然后找对事件处理的方法,发现我是在一个被释放的对象中调用了一个对象,从新修改代码,然后发现问题就解决了

end - _ -

你可能感兴趣的:(thread 1:exc_bad_access(code=1,adress=0x10))