Domanda

Quando mi schianto (per motivi che capisco; questo non è il problema) Quando provo a fare qualcosa di cacao non va bene, come chiamare un metodo che non esiste o tentare di inserire Nil in un set, il Debugger mostra lo stack da Main () a __pthread_kill, senza alcuno dei fotogrammi che erano presenti quando il codice schianto effettivo correva. C'è un telaio (9 ° da Main) chiamato OBJC_Exception_RETHROW. Questo mi porta a credere che il cacao tocco stia cercando di fare qualcosa o altro per recuperare tutte le eccezioni e morire con grazia o qualcosa del genere. Tuttavia, è molto irritante quando il debug di non avere la possibilità di utilizzare effettivamente gli strumenti di debug di XCode4 per indagare sui telai di stack chiamante, o addirittura vedere dove nel mio codice mi sono schiantato.

C'è un modo per rendere il comportamento objc_exception_rethrow non accadere, e semplicemente crash non appena viene sollevata un'eccezione? Forse c'è un'impostazione di debug che lo rende schiantato in precedenza (all'ora Destra )? (Non ho ancora incasinato una delle impostazioni di build in questo progetto.)

È stato utile?

Soluzione 2

Ho trovato la risposta: imposta un punto di interruzione sulle eccezioni di OBJ-C.Andrà al debugger quando objc_exception_throw è colpito, il che è buono.Sfortunatamente, questo succede prima che venga stampata l'eccezione, ma possiamo farlo comunque (la maggior parte del tempo) impostando l'azione di Breakpoint per essere (Debugger Action) po *(id *)($ebp + 8).

Altri suggerimenti

Non conosco alcuna impostazione Xcode che potrebbe disabilitare le eccezioni di riorganizzazione.A mia conoscenza vengono ri-lanciati dal runtime.Potresti provare a eseguire l'app senza il debugger collegato e lasciarlo schiantare.Il rapporto di incidente dovrebbe contenere una sezione "Ultima eccezione backtrace" che ti darà esattamente ciò di cui hai bisogno in questo caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top