2011-11-16 24 views
8

Obecnie pracuję z PLCrashReporter i potrzebuję pomocy przy konwersji plcrash bezpośrednio do pliku .crash zamiast korzystania z plcrashutil.PLCrashReporter - Jak przekonwertować .plcrash do .crash bezpośrednio z Xcode i zapisać go lokalnie

Co mogę zrobić, to obecnie -

symulować awarię i tworzy myapp.plcrash pliku.

Raz, że jest generowany używam następujących w linii poleceń -

plcrashutil convert --format=iphone myapp.plcrash > app.crash 

Działa to doskonale - Ale czy istnieje sposób mogę nie trzeba zrobić ten dodatkowy krok i przekonwertować go na polecenie .crash bezpośrednio z mojego kod prawdopodobnie przez zaimportowanie biblioteki czy coś?

Wszelkie rozwiązania?

Odpowiedz

16

dostałem odpowiedź

Oto rozwiązanie, jeśli ktoś szuka dla niego ..

PLCrashReportTextFormat textFormat = PLCrashReportTextFormatiOS; 


    /* Decode data */ 

    PLCrashReport *crashLog = [[PLCrashReport alloc] initWithData: data error: &error]; 
    if (crashLog == nil) { 
     NSLog(@"Could not decode crash file :%@", [[error localizedDescription] UTF8String]); 
    } else { 
     NSString* report = [PLCrashReportTextFormatter stringValueForCrashReport: crashLog withTextFormat: textFormat]; 
     NSLog(@"Crash log \n\n\n%@ \n\n\n", report); 

     NSString *outputPath = [documentsDirectory stringByAppendingPathComponent: @"app.crash"]; 
     if (![report writeToFile:outputPath atomically:YES encoding:NSUTF8StringEncoding error:nil]) { 
      NSLog(@"Failed to write crash report"); 
     } else { 
      NSLog(@"Saved crash report to: %@", outputPath); 
     } 

    } 
+0

jak odkodować dane? Tylko podstawowy hex do binarnego? –

+1

gdzie symbolizujesz dane? –

+0

zajęło trochę czasu, aby wypróbować, i tak, ten nowy format może być symbolizowane za pomocą symbolicatecrash, choć wygląda inaczej niż plik crash wygenerowany z plcrashutils. I w moim przypadku właśnie wysłałem raport przez sieć (nie ma potrzeby publikowania danych binarnych). –

0

próbowałeś symbolicate plik polecenie .crash w nowym formacie?