可以通過寫一個類CrashExceptioinCatcher,在類中定義一個靜態方法startCrashExceptionCatch, 方法裡調NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
綁定void uncaughtExceptionHandler(NSException *exception)方法處理異常信息,在void uncaughtExceptionHandler(NSException *exception)裡將異常打印出來,並附帶上設備信息提交至服務器,這樣在測試時候能夠比較有效的收集異常信息。
頭文件
#import@interface CrashExceptioinCatcher : NSObject + (void)startCrashExceptionCatch; @end
#import "CrashExceptioinCatcher.h" // 提交異常Log信息 void uncaughtExceptionHandler(NSException *exception) { // 異常Log信息 NSString *logInfo = [NSString stringWithFormat:@"Crash:\n%@\nStack Trace:\n%@\n", [exception description], [exception callStackSymbols]]; NSLog(@"%@", logInfo); // TODO: 提交服務器收集 // .... } @implementation CrashExceptioinCatcher + (void)startCrashExceptionCatch { // Sets the top-level error-handling function where you can perform last-minute logging before the program terminates. NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); //設置異常Log信息的處理 } @end
使用方法:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [CrashExceptioinCatcher startCrashExceptionCatch]; // ................. }
參考:http://arthurchen.blog.51cto.com/2483760/734175