【问题标题】:List last X malloc/free calls in Xcode, iOS列出 Xcode、iOS 中的最后 X 个 malloc/free 调用
【发布时间】:2015-08-20 19:22:29
【问题描述】:

在 Xcode 中调试 iOS,设置以下环境变量:

MallocCheckHeapStart=1
MallocCheckHeapEach=10
MallocStackLogging=1
MallocStackLoggingNoCompact=1

如果发现损坏,堆检查器将报告并中断,每 10 次堆操作检查一次。

那么我怎么知道最后 10 次堆操作是什么?

我知道malloc_info --stack-history 可以为我提供特定指针的历史记录,但在这种情况下,我不知道任何指针,我只知道最近 10 次操作中发生了堆损坏。

有没有办法可以列出最后的 X 堆操作,以便找到堆损坏的罪魁祸首?

【问题讨论】:

  • @Olaf Xcode 不仅仅是 Objective-C,在我的特殊情况下,我正在处理的绝大多数工作都是在 iOS 上运行的 C 和 C++ 中。 (上面有一个 Objective-C 层,但我遇到的堆损坏导致 C 和 C++ 代码崩溃)。
  • 好的。抱歉,这里有太多的菜鸟选择以正确字母开头的每个标签。

标签: c++ ios c xcode


【解决方案1】:

您是否已经阅读过thisthis 的文章?那里引用了gdb命令malloc_history...

我不确定这是否是您正在寻找的东西,但也许它会有所帮助。

【讨论】:

  • 是的,我已经知道了。当您的堆栈日志被写入磁盘时,似乎应该可以获得最后 X 分配的列表,而无需过滤特定指针,但我不知道如何(或真的是否)它是可能的。因此我的问题:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 2014-05-05
  • 1970-01-01
相关资源
最近更新 更多