zoukankan      html  css  js  c++  java
  • 解决LLDB模式下出现message sent to deallocated instance错误

    本文在源文的基础上做整理:http://www.devdiv.com/home.php?mod=space&uid=50901&do=blog&id=50856

    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];
  • 相关阅读:
    李彦宏最新演讲:移动互联网的时代已经结束了
    表值函数 详解
    SQL中PIVOT 行列转换
    将WeX5部署到自己的Tomcat服务器上
    Cordova webapp实战开发:(2)认识一下Cordova
    Cordova webapp实战开发:(1)为什么选择 Cordova webapp?
    甲有5套房,不上班,靠收房租生活;乙有1套房,上班赚工资……(启示)
    Ubuntu 16.04下为Android编译OpenCV 3.1.0 Manager
    Dual Camera Info
    OpenCV 3.1
  • 原文地址:https://www.cnblogs.com/isItOk/p/6582893.html
Copyright © 2011-2022 走看看