0

我花了相当长的时间试图追踪这个问题,并从其他有相同问题的人那里阅读多个建议。我处理的是一个庞大的代码库,所以在没有任何提示的情况下找到问题就像在干草堆中寻找针一样。

我读到的建议是在 *malloc_error_break* 上添加一个断点 - 但我该怎么做。我知道我必须添加一个符号断点,但我不确定在符号和模块这两个文本字段中究竟输入什么?

我尝试启用 Malloc Scribble 和 Malloc Guard Edges - 但都不会导致任何断点或崩溃。

如果我启用 Zombie Objects,程序将停止崩溃,但输出日志中没有显示任何问题。

最后我尝试启用 Guard Malloc。我知道它只适用于模拟器,所以我尝试了 - 但问题是程序在我的程序中的任何行执行之前在启动阶段崩溃:

0x958e0cd4  <+0000>  mov    0x4(%esp),%eax
0x958e0cd8  <+0004>  mov    %gs:0x0(,%eax,4),%eax   < Crash
0x958e0ce0  <+0012>  ret 

调用堆栈如下所示:

pthread_getspecific
__dyld__dyld_start

我不确定我在这里做错了什么?

4

1 回答 1

0

要在 malloc_error_break 上添加断点,只需在调试器中停止并b malloc_error_break在“gdb”或“lldb”提示符处键入。

于 2012-09-04T00:03:14.613 回答