2012-09-03 60 views
0

我花了相当一段时间试图追踪这个问题,并从其他人那里读取多个相同问题的建议。我处理一个庞大的代码库,因此在没有提示的情况下查找问题就像在干草堆中寻找针。如何追查“释放对象的错误校验和”

关于我读的建议是在* malloc_error_break *上添加一个断点 - 但我该怎么做。我知道我必须添加一个符号断点,但我不确定在两个文本字段Symbol和Module中输入什么内容?

我试图启用Malloc Scribble和Malloc Guard Edges - 但没有一个会导致任何断点或崩溃。

如果我启用僵尸对象,程序停止崩溃,但输出日志中没有任何内容显示任何问题。

最后我试图启用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

symbol ='malloc_error_break'模块在大多数情况下不需要定义。 – justin

回答

0

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

+0

如果我停止调试器并在“gdb”中键入b,它似乎在执行指针处设置了一个断点。 –

相关问题