我花了相当长的时间试图追踪这个问题,并从其他有相同问题的人那里阅读多个建议。我处理的是一个庞大的代码库,所以在没有任何提示的情况下找到问题就像在干草堆中寻找针一样。
我读到的建议是在 *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
我不确定我在这里做错了什么?