我的iOS应用程序存在很大问题:它有时会崩溃但没有详细的调试错误。 堆栈跟踪为空。这些是堆栈跟踪中唯一的两行:
com.apple.main-thread
中的。
Xcode调试器(连接设备)上的错误:
malloc: *** error for object 0x208a7614: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
我在malloc_error_break中使用libsystem_c.dylib设置了断点,没有来自调试器的任何反馈。我不知道要解决这个问题。
答案 0 :(得分:40)
要找到问题的根源,请在Xcode中转到产品>方案>编辑方案,在“诊断”选项卡下启用所有Malloc设置和Guard Malloc。
然后,再次运行您的应用程序,Xcode将停在导致问题的行。
答案 1 :(得分:24)
由于您在调试器中,您应该查看内存位置0x208a7614
并查看其中的内容。内存中的数据可能有助于弄清楚出了什么问题。
正在发生的事情之一是:
你正在释放一个物品两次,
你正在释放一个从未分配的指针
您正在编写一个无效指针,该指针先前指向已释放的对象
由于堆栈跟踪是空的,因此在各个地方的代码中添加一些调试日志语句可能会很有用,看看是否可以缩小代码中问题所在的位置。使用Instruments中的内存工具也可能有所帮助。您可以尝试启用NSZombies,但这看起来像是C分配问题,而不是Objective-C问题。
此外,在崩溃之前是否还有其他任何内容写入控制台?如果是这样,它可能会指出问题的来源。
答案 2 :(得分:2)
大家好我已经找到了这个解决方案,如果你正在使用nib或xib接口,当你想要推送一个viewcontroller对象时遇到这个问题,那么有时候会发生这个错误,你的应用程序会崩溃(特别是在iPad中出错)这是解决方案:
//格式如下
UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:yourViewControllerObj];
[self.navigationController presentViewController:nav animated:true completion:nil];
不要试图推动这种情况。
答案 3 :(得分:0)
如果您有此问题。 转到:产品->方案->诊断-> 然后启用 molical gaurd edge 和 zombie object 然后关闭 然后去产品->停止 然后再 产品构建和运行。 祝你好运