如何“在malloc_error_break中设置断点以进行调试”


126

我得到了很多这样的控制台输出,而我的应用程序却没有崩溃:

malloc:*对象0xc6a3970错误:未分配释放的指针*在malloc_error_break中设置一个断点进行调试

如何找出受影响的对象或变量?

我试图像这样设置一个符号断点,但是它从未停止过:

在此处输入图片说明


1
我通过禁用野生动物园检查来解决此问题。stackoverflow.com/a/43885754/6521116
Kris Roofe'5

造成这种情况的原因之一是应该返回一个对象并且该函数到达该函数的末尾并且不返回任何内容的函数/方法。
Xofo

Answers:


136

通过打开“断点导航器”(视图->导航器->显示断点导航器或⌘7),在malloc_error_break()上设置断点,单击左下角的加号按钮,然后选择“添加符号断点”。在出现的弹出窗口中,malloc_error_break在“符号”字段中输入,然后单击“完成”。

编辑:openfrog添加了一个屏幕截图,并表示我发布答案,他已经尝试了这些步骤,但没有成功。通过该编辑,我不确定该说些什么。我还没有看到自己无法正常工作,实际上我一直在malloc_error_break集上设置一个断点。


2
这对我有用(没有模块)。对我来说,这个问题的原因是我有UIImage一个文件作为后盾,并且正在用另一个映像覆盖该文件。当我调用UIImagePNGRepresentation原始图像时,这会导致错误(而不是在实际覆盖文件时)。
罗伯特

我在⌘7酒吧的左下角没有加号...也许您是说⌘8
ScottyBlades19年

@ScottyBlades猜测快捷方式已更改。我8年前和7个主要的Xcode版本写了这个答案……
Andrew Madsen

@AndrewMadsen不用担心,只需检查编辑是否有意义。
ScottyBlades19年

46

在屏幕快照中,您未指定任何模块:尝试设置“ libsystem_c.dylib”

在此处输入图片说明

我做到了,它起作用了:断点在这里停止(尽管stacktrace通常从一些晦涩的系统库中升起...)


7
看起来模块名称在iOS中是不同的,它是:libsystem_malloc.dylib。断点对我有效,而无需指定模块。
Nestor'1

6

我对Xcode有同样的问题。我按照您给出的步骤进行了操作,但没有成功。我发疯了,因为在我所看到的每个论坛中,有关此问题的所有线索都是您提供的。我终于看到我在malloc_error_break之后放了一个空格,我抑制了它,现在它可以了。愚蠢的问题,但是如果解决方案不起作用,请确保在malloc_error_break之前和之后都没有放置任何空格。

希望此消息对您有帮助。


4

我已经获得了权限,而不必在某些文件夹(尤其是/ usr / bin /)中写东西,这引起了问题。我通过打开“磁盘工具”并在Macintosh HD磁盘上运行“修复磁盘权限”来修复它。


谢谢,这解决了我烦人的机器。
Matt Fletcher 2014年

2

我用亲密的野生动物园检查员解决。请参阅我的帖子。有时,当我运行我的应用进行测试时,有时我会发现声音,然后打开自动检查器打开safari,此后,我在我的应用中执行了一些操作,然后触发了此问题。

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.