解决LLDB模式下出现message sent to deallocated instance错误

转自:https://www.cnblogs.com/whai/p/4914261.html

Xcode版本7.1  IOS版本9.1

公司之前开发的一个APP,在使用环境中IOS版本升级到9.0以后,某个操作会导致程序闪退。

Xcode代码中提示错误:

1
Thread 1: Program received signal: "EXC_BAD_ACCESS"

这样的提示意味着对已经释放的对象发送消息,或者对不能release的对象调用release。

默认情况下Xcode并不能准确定位到具体哪行代码引起的问题。

 

我们先对开发环境进行设置

先打开Debug的Console View界面,让Xcode在调试的时候输出更多的信息:菜单XCode > Preferences

 

再对环境变量进行设置:菜单Product > Scheme > Edit Scheme

 

设置好后调试程序,在输出界面发现了message sent to deallocated instance错误日志

 

在Xcode的以前版本中,我们可以在Xcode的Console View中使用info malloc-history 0x6d564f0来查看调用堆栈来查看崩溃发生的地方。

在新的Xcode中,调试器默认使用的LLDB,那么怎么在LLDB状态下定位由于内存操作不当引起的Crash呢?

 

打开“活动监视器”,在进程列表中找到测试APP对应的进程号PID(Xcode启用调试后会在进程列表中找到对应APP的进程)

 

现在我们得到两个主要的信息:

APP进程ID:1087

崩溃地址:0x7f7f7523ff10

 

打开“终端”,输入以下命令:

sudo malloc_history 1087 0x7f7f7523ff10

得到错误日志,这样就能定位到最后调用的那行代码

downLoadBtns是我们自定义的一个方法,在这个方法内部对新构建的UIButton做释放,它就是引起崩溃的元凶。

[btn release];

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值