我已经为我的iPhone应用程序编写了一个未处理的错误模块,但由于某些原因某些错误正在设法绕过它。如何捕获iPhone上的所有程序中止错误?
我有一个异常处理程序和下面的信号处理程序设置:
NSSetUncaughtExceptionHandler(&handleException);
signal(SIGILL, handleSignal);
signal(SIGABRT, handleSignal);
signal(SIGFPE, handleSignal);
signal(SIGBUS, handleSignal);
signal(SIGSEGV, handleSignal);
signal(SIGSYS, handleSignal);
signal(SIGPIPE, handleSignal);
对于大多数的东西(无法识别的选择,浮点错误等等),它的工作原理,但例如当我运行下面的代码:
NSString* str = [NSString stringWithFormat:@"a"];
[str release];
[str retain];
这完全避免了我的错误处理程序,而是打印此控制台:
堆栈转储: 0运行通功能上“@ glgRunProcessor10”结合冗余指令“**
我有另外一个印刷以下(但我不记得我跑什么样的代码,以使其):
堆栈转储: 0运行通 '线性扫描寄存器分配' 的功能, '@ gldLLVMFPTransform5'
如果我这样做:
NSString* str = [NSString stringWithFormat:@"a"];
[str release];
[str init];
它根本不打印任何东西,只是退出程序。
有没有人知道确保所有错误被捕获并通过处理程序运行的绝对方法?