【发布时间】: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++ 代码崩溃)。
-
好的。抱歉,这里有太多的菜鸟选择以正确字母开头的每个标签。