私はhttp://code.google.com/p/google-toolbox-for-macからGTMStackTraceを使用しています。NSSetUncaughtExceptionHandlerがiPhoneのすべてのエラーをキャッチしない
アプリがクラッシュしたときにエンドユーザがエラーを送信する方法をテストする必要があります。私はどのように私のウェブサイトにデータを送るのか知っていますが、問題はどのように処理されていないエラーをすべて捕まえるかということです
私はこのコードを持っている:
void exceptionHandler(NSException *exception) {
NSLog(@"%@", [exception reason]);
NSLog(@"%@", [exception userInfo]);
NSLog(@"%@", GTMStackTraceFromException(exception));
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:NSLocalizedString(@"Error unexpected",@"Info: Can't save record")
message:GTMStackTraceFromException(exception) delegate:nil
cancelButtonTitle:NSLocalizedString(@"Ok",@"Button: Ok") otherButtonTitles:nil];
[alert show];
[alert release];
}
int main(int argc, char *argv[]) {
//For crash report..
NSSetUncaughtExceptionHandler(&exceptionHandler);
//Normal code...
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
はしかし、事は悪いのリリース、BAD ACCES、などのように、エラーの多くをキャッチされない、とアプリケーションが消えます。私は2つの問題があります。どこに問題があるのか明確ではなく、エンドユーザは何を言いたいのか分からないのです。
だから、私が得るどのようにエンドユーザーのシンプルなので、すべてのその厄介なエラーが私にクラッシュレポートを送信する(例えば、リリースのために二度同じvarがキャッチされていませんか)?
また、エラーラインでフルスタックトレースを取得することはできますか? – mamcx
あなたは実際にそのUIAlertViewを表示させることができますか?私はできない。何かアドバイス? – Mark