我花了很多时间试图追踪这个问题并阅读其他人提出的同样问题的建议。我处理一个大的代码库,所以在没有一些提示的情况下找到问题就像在干草堆中寻找针。
我读到的建议是在* 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
我不确定我在这里做错了什么?
答案 0 :(得分:0)
要在malloc_error_break上添加断点,只需在调试器中停止并在“gdb”或“lldb”提示符下键入b malloc_error_break
。