Iphone 没有警告的SIGKill或带有NSLogv的堆栈跟踪

Iphone 没有警告的SIGKill或带有NSLogv的堆栈跟踪,iphone,objective-c,memory,Iphone,Objective C,Memory,我知道这是一个有点模糊的问题,但在调试执行期间,我正在使用的应用程序在没有任何堆栈跟踪或警告的情况下死亡,调试控制台中只显示以下消息: 程序收到信号:“SIGKILL” 我在XCode中设置了NSZombieEnabled、NSDebugEnabled、mallocstackloggingnotcompt和MallocStackLogging 我运行了一些仪器来检查内存泄漏,但没有报告 在调试器报告“GDB:Interrupted”之后,我可以使用调试器进入的最后一个地方是调用NSLogv的这段

我知道这是一个有点模糊的问题,但在调试执行期间,我正在使用的应用程序在没有任何堆栈跟踪或警告的情况下死亡,调试控制台中只显示以下消息:

程序收到信号:“SIGKILL”

我在XCode中设置了NSZombieEnabled、NSDebugEnabled、mallocstackloggingnotcompt和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的调用一起发生,而不是在其他地方


我还可以打开或设置什么来找出调试器终止应用程序实例的原因?

检查格式字符串和提供的参数类型是否正确,例如,如果格式字符串为@“%f”,参数为@“hello”,这将崩溃….

应用程序是多线程的吗?例如,您是使用
performSelectorInBackground:withObject:
,还是直接使用
NSThread
?我在不同的地方使用NSOperations,在应用程序获得SIGKILL时,是在我使用“performSelectorOnMainThread:withObject”从运行循环返回后。NSOperation类传递了最终调用“print”的对象,但打印发生在主线程上。根据NSLogv的参考文档,我假设它是线程安全函数,我认为我正确使用了它。您是为设备还是模拟器而构建?