Ros*_*mes 24 iphone exc-bad-access lldb
我正在尝试在我的iPhone应用程序中调试EXC_BAD_ACCESS.它正在崩溃一个方法调用,并在方法的行上EXC_BAD_ACCESS (code=1, address = xxx).  
以前,我刚刚gdb info malloc-history <xxx>开始调试,但是我找不到并行命令LLDB.  
我看到这个线程说要使用Instruments,但是当我这样做时,我仍然会遇到崩溃,但我无法弄清楚如何准确地告诉应用程序在Instruments中崩溃的位置.
我只需要弄清楚崩溃的这块内存指向的位置.使用LLDB或使用仪器的最佳方法是什么?
Sam*_*Sam 44
如果使用仪器进行调试,则可以看到malloc堆栈.
我遇到了和你一样的问题,同样想知道如何在使用lldb时获取malloc历史记录.可悲的是,我没有找到像malloc-historygdb中找到的漂亮的命令.说实话,我只是调试了调试器,但我发现这很烦人,因为我觉得我不应该这样做.

在这一点上查看malloc历史应该是一件简单的事情.我把那些具有类别/项目名称的部分涂黑了我正在做的工作,但我认为如何获取这些信息的本质和实用性是存在的.我遇到的问题产生了如下消息:
*** - [someClass retain]:消息发送到解除分配的实例0x48081fb0 someProject(84051,0xacd902c0)malloc:使用标准记录器记录malloc堆栈到磁盘
我真的很困惑,retain因为它的代码没有一个(不是在它的线上的getter或setter).事实证明,removeObserver:forKeyPath:当某个对象被dealloc编辑时,我没有打电话.后来在执行中KVO发生了对线路上的设置器的影响,并且由于KVO试图通知已经释放的对象,因此该程序爆炸了.
Sam*_*Sam 37
通过信息性回溯很容易解决这个问题.不幸的是,使用最新版本的iOS和Xcode,有时很难获得良好的堆栈跟踪.幸运的是,您可以在Xcode中设置"异常断点",以允许您在EXC_BAD_ACCESS异常之前检查此代码.
现在,您应该在发生此异常之前立即获得完整的回溯.这应该允许您至少抛出抛出此异常的位置.
小智 14
你可以在lldb中使用这样的命令:
image lookup --address 0xec509b
Run Code Online (Sandbox Code Playgroud)
您可以在以下位置找到更多命令:LLDB TO GDB COMMAND MAP
Fab*_*oto 10
在LLDB上可能为时已晚,但需要进一步的帮助:
(lldb) p *(MyClassToPrint*)memory_address
Run Code Online (Sandbox Code Playgroud)
例如 
(lldb) p *(HomeViewController*)0x0a2bf700
Run Code Online (Sandbox Code Playgroud)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           19868 次  |  
        
|   最近记录:  |