2013-10-15 21 views
8

Ho un progetto costruito per iOS 7 e ha funzionato fino ad ora, ma dopo un'unione Git, alcune impostazioni o qualcosa sono state danneggiate e le eccezioni non sono più emesse per console. Quindi il messaggio di errore "Termina un'app a causa dell'eccezione non rilevata" non viene mai visualizzato nella console. Ho provato il progetto sia sul dispositivo che sul simulatore, stessa cosa. Non riesco a trovare il motivo per cui è questo e come risolverlo e sto umilmente chiedendo il tuo aiuto.Xcode 5 non stampa dettaglio delle eccezioni

I fatti:

  • debugger sta lavorando e in esecuzione,
  • fermate debugger e mette in evidenza Correct Line,
  • tutte le eccezioni punto di interruzione è attivo,
  • comandi NSLog stanno lavorando,
  • Il comando
  • po in lldb sta funzionando.

Cosa ho provato prima di chiedere aiuto?

  • pulizia (tra cui costruire cartella) e la ricostruzione del progetto,
  • riavvio Xcode,
  • riavvio OS X,
  • dispositivo riconnessione,
  • dispositivo Riavvio.

Cos'altro posso fare? Grazie per l'aiuto!

+0

Hai provato a diffare il commit git per scoprire cosa è stato cambiato? – neilco

+1

Premi il pulsante continua dopo l'arresto del debugger?Nella mia esperienza i dettagli non vengono stampati finché non si preme il pulsante Continua due volte dopo che il debugger si è fermato a un punto di interruzione di eccezione. – borrrden

+0

Ho controllato il commit, non è stato modificato nulla nei file di progetto. Solo i file del codice sorgente. @ Borrrden, certo che ci ho provato. Non cambia nulla, anche quando il debug viene fermato, non viene emesso nulla per console in merito alle eccezioni. – Legoless

risposta

5

Ho riscontrato questo problema durante il tentativo di eseguire il debug di un arresto automatico. Non sono sicuro se questo vale per tutti i casi, ma ecco la mia soluzione:

ho fatto qualche caccia, e sono imbattuto in questo link:

Investigating NSExceptions with LLDB

Questo mi ha portato a pasticciare con i punti di interruzione di eccezione per cercare di capire quale fosse il problema. Nel mio caso, ho sempre trovato la descrizione su $eax, quindi ho deciso di aggiungere un'azione al punto di interruzione, quindi non devo eseguire il debug ogni volta. Ciò gli ha causato di stampare sempre $eax senza un punto di interruzione, quindi agisce praticamente come lo voglio (stampare la descrizione dell'eccezione, continuare a bloccarsi).

Passi:

Add an Exception Breakpoint

Edit the breakpoint you just added

Add an action to <code>po $eax</code>, and check "automatically continue after evaluating"

Risolto il problema che stavo avendo attualmente, e sono sicuro che variazioni su questa soluzione (po $ebx, po [NSThread callStackSymbols], ecc) dovrebbe aggirare la maggior parte dei problemi con le descrizioni delle eccezioni mancanti.

+0

Aggiungerò un punto delicato qui che aiuterà anche. ctrl clic e quindi vai a "Sposta il punto di interruzione su" e poi su "Utente". Renderà l'utente specifico. –