【问题标题】:Set malloc_error_break in Xcode 4在 Xcode 4 中设置 malloc_error_break
【发布时间】:2011-08-06 22:32:22
【问题描述】:

如何在 Xcode4 中设置 malloc_error_break?另外,我似乎收到了这个错误malloc: *** error for object 0x4d80814: incorrect checksum for freed object - object was probably modified after being freed.

无论如何我可以检查 0x4d80814 是什么对象吗?它不会显示在调试器的变量列表中。

【问题讨论】:

  • 它没有出现在调试器中,因为它已被释放并且可能在 Apple 的代码内部引用。我建议使用 Analyzer 来查找内存管理中任何明显的不一致。
  • 您可能正在修改一个已经释放的对象,而malloc 稍后会检测到它。如果您分析错误并使用 Zombies 工具,您可能会查明错误的位置。

标签: iphone ios xcode


【解决方案1】:

我认为这就是它的完成方式。

  • 单击左侧栏顶部的断点导航器(看起来像一个路标) XCode 4。
  • 在左下角有一个加号。点击它。
  • 添加符号断点并将 malloc_error_break 设置为符号。
  • 单击下一个断点按钮(看起来像 |>),它位于底部面板上。它会将您带到导致错误的行。

通常是由于对象被创建为其他尚不存在的对象的子对象(即 SKPhysicsBody 在其 spritenode 存在之前创建)

【讨论】:

  • 您能否提供更多关于这一点的详细信息:单击下一个断点按钮(它看起来像 |>),它位于底部面板上。它将带您到导致错误的行。我用的是xcode 8,没找到|>这种符号
【解决方案2】:

断点按钮如下所示:

这是左下角的加号:

伙计,我花了一段时间才找到他们两个!

【讨论】:

  • 来吧,伙计。对于总是通过鼠标/键盘快捷键设置断点的人来说,这是新东西。不是每个人都知道这一点。
【解决方案3】:

您也可以直接通过 gdb 命令窗口进行操作。

break malloc_error_break

或在 lldb 中:

breakpoint set -n malloc_error_break

要在 XCode 4 中打开调试器命令窗口,请单击右上角“查看”上方的中间按钮,然后单击刚刚打开的底部调试窗格右上角的中间按钮。另见Input to console in Xcode 4

【讨论】:

  • 请注意,这是用于 gdb 但默认调试器通常是 lldb,其语法不同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 2011-01-12
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 2012-05-22
  • 2012-11-06
相关资源
最近更新 更多