その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

クラッシュイベントを受け取る

TestFlight SDK とか、クラッシュイベントを受け取って Stack Trace をレポートしてくれたりしますが、どうやるんだろう?と思い調べてみました。


クラッシュイベントを受け取って何かしたい場合は、 NSSetUncaughtExceptionHandler() にハンドラ関数のポインタを渡すだけ。

NSSetUncaughtExceptionHandler(&exceptionHandler);


例外発生時に実行するハンドラ関数は、こんな感じで実装します。
(下記サンプルでは、スタックトレース結果をログ出力しています)

void exceptionHandler(NSException *exception)
{
	NSString *trace = [[exception callStackReturnAddresses] componentsJoinedByString:@"\n"];
	NSLog(@"Stack: (\n%@\n)", trace);
}


TestFlight が実際にこういう実装になっているかは、定かではありません。