【发布时间】:2013-11-19 09:03:50
【问题描述】:
我的 iOS 应用程序有一个大问题:它有时会在没有详细调试错误的情况下崩溃。 堆栈跟踪为空。这些是堆栈跟踪中仅有的两行:
- 在 UIApplicationMain 中的“符号存根:-[_UIHostedTextServiceSessiondismissTextServiceAnimated:]”处开始崩溃。
- 并报告“libsystem_c.dylib`malloc_error_break”。
在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
我已经使用 libsystem_c.dylib 在 malloc_error_break 中设置了一个断点,而没有来自调试器的任何反馈。我不知道如何解决这个问题。
【问题讨论】:
-
这很难。您基本上必须检查代码才能发现问题。如果您能弄清楚所涉及的对象类型,那将有很大帮助。 (顺便说一句,ARC 还是手动引用计数?)
-
我很确定在
malloc_error_break中设置断点的唯一用途是它可以让您有机会查看损坏的释放对象,并且内存的内容可能会对您有所帮助追踪你覆盖它的点。 -
这是一个 C++ 库,它是 MRC 项目。
-
我的朋友在 Mac 上编译了我的 C 代码,它在运行时给出了这个错误。但是,它在 Linux 上编译并运行得很好。这似乎是 Mac 特有的问题。
-
尝试清理项目 CMD+SHIFT+K。它有帮助:)
标签: ios objective-c c crash malloc