zoukankan      html  css  js  c++  java
  • 转iphone如何调试EXC_BAD_ACCESS

    原文地址:http://www.codza.com/how-to-debug-exc_bad_access-on-iphone 

    当程序出现“EXC_BAD_ACCESS”时,就像不解风情的妻子对你说:“亲爱的,今晚不行”。这两种情况都是非常不幸的。 

    让我们先看看EXC_BAD_ACCESS到底是什么。 

    向已经释放的对象发送消息时会出现EXC_BAD_ACCESS。当出现错误时,通常会调用堆栈信息,特别是在多线程的情况下。 

    怎样提供一个dummy,当释放一个对象导致程序终止时,在堆栈上告诉我们错误信息,好,下面我们将告诉你怎么去做。 

    如果你设置了NSZombiEnabled环境变量,当销毁一个对象时,objective的运行时环境会在这个对象后边设置一个dummy,当调用这个对象的方法时,程序会终止,并在堆栈上显示错误信息,下边教你怎么设置NSZombiEnabled 

    首先,在Xcode中打开executables 

     
    查看其中内容的信息。 
    然后,打开信息面板中的Arguments面板 

     
    点击左下角的加号,添加变量NSZombiEnabled,并将变量的值设置为YES。 
    重新运行程序,当过度释放对象时,会在控制台上出现如下信息: 
    2009-03-30 02:30:36.172 ninjaJumper[3997:20b] *** -[GameLayer retain]: message sent 
    to deallocated instance 0x59bf670 

    说明想GameLayer的一个对象发送了retain消息 

    查看堆栈信息: 
     

    如何查看:http://lovebirdegg.javaeye.com/blog/550489 

    当问题解决后,要将NSZombieEnabled设置为无效,不需要删除变量,将变量前的对号去掉就可以了: 
     
  • 相关阅读:
    SignalRMvc的简单例子
    CTE递归查询
    数据库表设计(邻接表、路径枚举、嵌套集、闭包表)
    EF事务
    context日志
    Context连接和断开的情况下的CRUD操作
    Sql语句拼接(EXEC和sp_executesql的区别)
    实体框架中的变更跟踪
    sql server 添加字段并且赋默认值和说明
    C# .ToString() 格式化
  • 原文地址:https://www.cnblogs.com/luyinghuai/p/1999783.html
Copyright © 2011-2022 走看看