NSSetUncaughtExceptionHandler nie łapie wszystkich błędów na iPhone

Używam GTMStackTrace zhttp://code.google.com/p/google-toolbox-for-mac.

Potrzebuję sposobu, aby przetestować użytkownika końcowego, aby wysłać mi błędy podczas awarii aplikacji. Wiem, jak przesyłać dane do mojej strony internetowej, ale problem polega na tym, jak złapać wszystkie błędy, które nie są obsługiwane.

Mam ten kod:

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;
}

Rzecz jednak nie złapała wielu błędów, takich jak złe wydanie, BAD ACCES itp., A aplikacja zniknęła. Mam 2 problemy, w których nie jest jasne, dlaczego tak się stało, a użytkownicy końcowi nie mają pojęcia, co powiedzieć.

(Na przykład dwukrotne zwolnienie tej samej var nie jest catch)

Jak więc uzyskać WSZYSTKIE nieznośne błędy, aby użytkownik końcowy mógł wysłać mi raport o awarii?

questionAnswers(2)

yourAnswerToTheQuestion