2012-05-22 30 views
13

Sto usando Xcode 4.3.1. L'incidente è accaduto sul mio dispositivo, in modo da collegarlo e aprire Organizer, va 'dai miei registri dei dispositivi, trova il rapporto incidente, ed ecco cosa si legge:Perché i miei rapporti di arresto anomalo non sono simbolizzati?

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x00000000, 0x00000000 
Crashed Thread: 0 

Last Exception Backtrace: 
0 CoreFoundation     0x3514488f __exceptionPreprocess + 163 
1 libobjc.A.dylib     0x3656b259 objc_exception_throw + 33 
2 CoreFoundation     0x35144789 +[NSException raise:format:] + 1 
3 CoreFoundation     0x351447ab +[NSException raise:format:] + 35 
4 CoreFoundation     0x350b168b -[__NSCFDictionary setObject:forKey:] + 235 
5 myapp       0x0015b4a7 0xe8000 + 472231 
6 myapp       0x0018add1 0xe8000 + 667089 
7 myapp       0x0013cd5b 0xe8000 + 347483 
8 Foundation      0x30ffb60d __NSFireTimer + 145 
9 CoreFoundation     0x35118a33 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 15 
10 CoreFoundation     0x35118699 __CFRunLoopDoTimer + 365 
11 CoreFoundation     0x3511726f __CFRunLoopRun + 1207 
12 CoreFoundation     0x3509a4a5 CFRunLoopRunSpecific + 301 
13 CoreFoundation     0x3509a36d CFRunLoopRunInMode + 105 
14 GraphicsServices    0x36396439 GSEventRunModal + 137 
15 UIKit       0x32190e7d UIApplicationMain + 1081 
16 myapp       0x000f6aff 0xe8000 + 60159 
17 myapp       0x000e9370 0xe8000 + 4976 


Thread 0 name: Dispatch queue: com.apple.main-thread 
Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x34f3832c __pthread_kill + 8 
1 libsystem_c.dylib    0x36e34208 pthread_kill + 48 
2 libsystem_c.dylib    0x36e2d298 abort + 88 
3 libc++abi.dylib     0x30af9f64 abort_message + 40 
4 libc++abi.dylib     0x30af7346 _ZL17default_terminatev + 18 
5 libobjc.A.dylib     0x3656b350 _objc_terminate + 140 
6 libc++abi.dylib     0x30af73be _ZL19safe_handler_callerPFvvE + 70 
7 libc++abi.dylib     0x30af744a std::terminate() + 14 
8 libc++abi.dylib     0x30af881e __cxa_rethrow + 82 
9 libobjc.A.dylib     0x3656b2a2 objc_exception_rethrow + 6 
10 CoreFoundation     0x3509a506 CFRunLoopRunSpecific + 398 
11 CoreFoundation     0x3509a366 CFRunLoopRunInMode + 98 
12 GraphicsServices    0x36396432 GSEventRunModal + 130 
13 UIKit       0x32190e76 UIApplicationMain + 1074 
14 myapp       0x000f6af8 0xe8000 + 60152 
15 myapp       0x000e9368 0xe8000 + 4968 

ho pensato Xcode maniglie symbolicating le segnalazioni di crash per me automaticamente? Perché non ricevo numeri di linea o metodi? E perché i miei codici di eccezione sono 0x00000000?

Ho provato the method found here, ma quando digito uno qualsiasi degli indirizzi di memoria, l'uscita è proprio lo stesso indirizzo di memoria. È questa la maggior parte delle informazioni che posso ottenere dai registri degli arresti anomali, o c'è qualcosa di sbagliato qui?

+0

Hai provato a eseguire il rapporto di arresto anomalo tramite [atos] (https://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/atos.1.html)? – lottscarson

+0

Sì, ho provato il metodo trovato nel link sopra, che è il metodo atos, ma qualunque sia l'indirizzo di memoria che digito dopo 'atos -arch armv7 -o 'myapp.app'/'myapp' MEMORY ADDRESS', si disconnette qualsiasi cosa Digito per l'indirizzo di memoria, quindi l'output qui sarà MEMORY ADDRESS – Snowman

+0

Un'altra cosa: l'ultimo arresto si è verificato questa mattina e ho modificato un paio di righe di codice (elementi dell'interfaccia) e l'ho creato. Di solito non eseguo l'archiviazione o altro, basta costruire. Quindi il registro di crash che ho proviene da una build precedente (anche se non molto cambiato). Se non utilizzo l'opzione di archiviazione, potrebbe essere questa la ragione per cui? – Snowman

risposta

8

Per simboleggiare il rapporto di arresto anomalo è necessario il pacchetto dSYM di quella build esatta. Immagino che questa fosse una build di debug che non è stata archiviata, quindi anche il dSYM è stato sovrascritto la prossima volta che crei l'app. Questo è il motivo per cui l'organizzatore non ha potuto simboleggiare completamente il rapporto sul crash.

Il metodo che hai citato funziona solo se il file binario non ha simboli spogliati, e anche allora non segnalerebbe i numeri di riga! Quindi, invece di usarlo contro il binario dell'app, usalo piuttosto con il dSYM. Forse sei fortunato e il nuovo dSYM ha ancora alcune informazioni utili.

atos -arch armv7 -o 'appname.app.dSYM' 0x0015b4a7

L'arresto stesso potrebbe essere l'impostazione di un valore per esempio NSDictionary una chiave nulla.

+2

Fortunatamente con la versione di Xcode 4.3.2 per me i log sono simbolizzati con i numeri di riga e senza l'attuale build building mentre il 'Strip Debug Symbols During Copy 'è impostato su' NO' per le configurazioni di Debug. –

+0

Quindi il dSYM è ancora disponibile sul tuo Mac. Lo script di simbolizzazione lo cerca utilizzando spotlight. I simboli che fanno parte dell'eseguibile non forniscono i numeri di riga. Mai. – Kerni

+0

ha senso, grazie. –

8

Nella speranza che questo possa aiutare qualcun altro con lo stesso problema, ciò che ha funzionato per me era il seguente comando nella directory di archivio (simile a/Users/my_user/Library/Developer/Xcode/Archives/2012-09 -24, quindi inserire cd prima)

mdimport . 

Provare a eseguire lo script symbolicatecrash dopo quello. In XCode, vai al tuo Organizer, Log dei dispositivi e seleziona "Re-Symbolicate Log" facendo clic con il pulsante destro del mouse sul registro degli arresti anomali.

+2

Questo ha funzionato perfettamente per un'applicazione che ho sul mercato. Brillante! Cosa ti ha portato a trovarlo? – paiego

+0

Questo ha funzionato perfettamente anche per me. –

+0

Ha funzionato anche per me! Grazie! –

4

Non ho potuto ottenere XCode 4.5.1 per simbolizzare trascinando il rapporto di arresto anomalo in Organizer-> Dispositivi-> Libreria-> Registri dispositivo.

Né è possibile ottenere l'indirizzo simbolizzato dello schianto specificando dSYM per il post in alto da @Kerni.

Ho utilizzato atos, ma ho potuto farlo funzionare specificando il percorso completo del file di simboli all'interno del file xcarchive (in realtà è una directory). Esempio:

cd dir_where_the_xcarchive_is 
atos -arch armv7 -o myApp\ 9-18-12\ 5.28\ PM.xcarchive/dSYMs/myApp.app.dSYM/Contents/Resources/DWARF/myApp 0x0001943a 
1

quanto riguarda la tua domanda circa i codici di eccezione ...

Exception Codes: 0x00000000, 0x00000000 

... this Apple Technical Note Potrebbe rispondere alla tua domanda. In breve, questo rapporto di arresto anomalo non è stato generato da un tipo di arresto standard documentato.

Circa 16 righe nel registro dei crash, si vedrà una riga che inizia con il testo, seguito da uno o più valori esadecimali, che sono codici specifici processori che possono dare ulteriori informazioni sul natura dello schianto.Si può dire da questi codici se l'applicazione si è schiantato a causa di un errore di programmazione (ad esempio, un cattivo di accesso alla memoria, un'eccezione, ecc), o se l'applicazione è stata terminata per qualche altro motivo, ad esempio:

Il codice di eccezione 0x8badf00d indica che un'applicazione è stata terminata da iOS perché si è verificato un timeout del watchdog. L'applicazione ha impiegato troppo tempo per avviarsi, terminare o rispondere agli eventi di sistema. Una causa comune di è il networking sincrono sul thread principale . Il codice di eccezione 0xbad22222 indica che un'applicazione di VoIP è stata terminata da iOS perché è stata ripresa anche frequentemente. Il codice di eccezione 0xdead10cc indica che l'applicazione è stata terminata da iOS perché è stata mantenuta su una risorsa del sistema (come il database della rubrica) mentre era in esecuzione nello sfondo . Il codice di eccezione 0xdeadfa11 indica che un'applicazione utente è stata forzatamente chiusa dall'applicazione . L'interruzione forzata si verifica quando l'utente prima tiene premuto il pulsante di accensione/spegnimento fino a quando non viene visualizzato "slide to power off" , quindi tiene premuto il pulsante Home. È ragionevole assumere che l'utente abbia eseguito questa operazione perché l'applicazione è diventata non risponde, ma non è garantita: la chiusura forzata funzionerà su qualsiasi applicazione .

0

Utilizzare invece Crashlytics.

Fornisce istantaneamente (ottenere una notifica tramite e-mail) sui rapporti di arresto anomalo in tempo reale e il numero esatto di riga in cui si è verificato un arresto anomalo.

Problemi correlati