我已經爲我的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];
它根本不打印任何東西,只是退出程序。
有沒有人知道確保所有錯誤被捕獲並通過處理程序運行的絕對方法?