我知道这是一个有点模糊的问题,但是在调试执行期间,我正在处理的应用程序在没有任何堆栈跟踪或警告的情况下死机,并且在调试控制台中只显示此消息:
收到信号:“SIGKILL”。
我在XCode中设置了NSZombieEnabled,NSDebugEnabled,MallocStackLoggingNotCompact和MallocStackLogging。
我已经运行了仪器来检查没有报告的内存泄漏。
在报告“GDB:Interrupted”是调用NSLogv的这段代码后,我可以进入调试器的最后一个位置:
+ (void)print:(NSString *)format, ...
{
va_list args;
va_start(args, format);
// Doesn't seem to go past this line
NSLogv(format, args);
va_end(args);
}
但是这个方法在整个应用程序中被多次调用,并且在我使用该应用程序足够长的时间之后的任何地方都没有问题。
此后通过调试器显示的堆栈是:
#0 0x02592e07 in ___forwarding___
#1 0x02592cd2 in __forwarding_prep_0___
#2 0x000ce57f in _NSDescriptionWithLocaleFunc
#3 0x0260b00d in __CFStringAppendFormatCore
#4 0x02552f87 in _CFStringCreateWithFormatAndArgumentsAux
#5 0x025da36e in _CFLogvEx
#6 0x0014beb5 in NSLogv
一遍又一遍地重新测试,SIGKILL一直在调用NSLogv而不是其他地方。
我还可以设置什么来设置调试器终止应用实例的原因?
答案 0 :(得分:1)
检查格式字符串,提供的参数是正确的类型,例如格式字符串为@“%f”,参数为@“hello”,这会崩溃....