2011-11-09 16 views
39

Per esempio, sto mostrando il codice a questo problema, ma in realtà la mia domanda è: come devo rintracciare e capire gli errori SIGABRT? Ho letto questa domanda: sigabrt with no error message, tuttavia non penso che questo riguardi il mio problema.Come rintracciare la causa di SIGABRT

L'esempio che mostrerò di seguito non è ovviamente un problema con xib, e le volte precedenti ottenere SIGABRT sembrava avere più a che fare con le eccezioni non gestite. Ho provato a utilizzare GDB bt ma questo non aiuta. Non c'è una discarica più completa da visualizzare? Ho anche usato NSZombie, ma davvero non capisco come usarlo, quindi se questa è la tua risposta, ti preghiamo di fornire un link alla documentazione su come dovrei ottenere i dati rilevanti da esso.

Ecco il mio esempio: sto cercando di utilizzare i dati principali. Il mio progetto non è stato originariamente impostato con esso, quindi ho dovuto aggiungerlo manualmente, cosa che ho fatto andando al mio progetto> Compila fasi> Collega binario con le librerie> facendo clic sul plus e aggiungendo CoreData.framework

Quindi io creato il mio modello dati andando su File> Nuovo> Modello dati. Ho creato un bel paio di attributi e basta

Dopo di che, ho aggiunto i metodi propri della delegato app (Ho fatto questo con la creazione di un nuovo progetto con Core Data, quindi copiare i metodi oltre):

//code removed, as its not needed for the question/answer 

Dopo questo ho solo cercato di salvare un valore per l'oggetto gestito (ancora una volta, il codice copiato dal implementazione predefinita con un nuovo progetto):

//code removed, as its not needed for the question/answer 

Ma tutto quello che ottiene quando esegue il metodo addTime è il Errore SIGABRT.

xcode error

+0

ho riletto questo a causa di un altro commento lasciato su un post precedente. posso capire se non è leggibile, ma quale parte in particolare stai riscontrando problemi. –

+0

mi dispiace josh, passerò attraverso e cambierò alcune cose (l'inglese non è mai stato il mio argomento forte) di certo non voglio escludere nessuno dal rispondere solo perché non hanno capito la domanda. ma se questa è solo una cosa OCD, che "why me" –

+0

lol già fatto. grazie.come ho detto ho riletto questo dopo aver postato nella speranza che non vorrei imbattersi in questo commento di nuovo. NON scrivo MAI le cose correttamente. non ne ho mai bisogno, quindi questa sarà un'abitudine molto dura per me, ma in futuro proverò. –

risposta

71

SIGABRT sorge quando un oggetto riceve messaggi non attuate. Quanti avvisi ha la tua app? Prova a navigare attraverso di loro e trova quelli che ti avvertono "alcuni oggetti potrebbero non rispondere ad alcuni selettori", se pulisci la tua app da tutti questi, molto probabilmente lo farai funzionare correttamente.

EDIT: risposta da commenti qui sotto, che sono molto utili:

ok, qui va artiglieria pesante - Hai provato a usare i punti di interruzione? Apri la sesta scheda del tuo progetto di esplorazione, nell'angolo in basso a sinistra tocca + -> Aggiungi punto di interruzione eccezione -> Fatto. Questo aggiungerà un gestore di eccezioni che interromperà la tua app proprio durante la chiamata al metodo che causa l'arresto anomalo dell'applicazione .

MODIFICA: A partire da xCode 5.0> Non è più necessario specificare quale eccezione è il punto di interruzione che verrà catturato durante la creazione del punto di interruzione. Devi solo premere + -> Aggiungi punto di interruzione eccezione e sei a posto.

enter image description here

+0

ho un totale di 4 (3 dei quali sono per oggetti non utilizzati e il terzo è tipi di puntatori incompatibili.) NESSUNO dei quali indica una delle classi usate sopra –

+42

ok, qui va artiglieria pesante - hai provato a utilizzare i punti di interruzione? scheda nel tuo progetto explorer, nell'angolo in basso a sinistra tocca + -> Aggiungi punto di interruzione eccezione -> Fatto. Questo aggiungerà un gestore di eccezioni che interromperà la tua app nella stessa chiamata al metodo che causa l'arresto anomalo dell'app. – Eugene

+0

grazie ho trovato il mio objectobject era nulla, questo ha aiutato a rintracciare l'errore generico sigabrt. per favore se hai tempo aggiungi il tuo commento alla risposta, lo segnalo male come risposta ma in realtà è il commento che lo ha fatto per me –

Problemi correlati