2011-11-30 11 views
28

In passato, con il vecchio e buono Xcode 3, ogni volta che si verificava un arresto anomalo, Xcode si fermava sulla linea che mostrava il crash. E 'stato bello, bello fare il debug.Xcode si ferma sempre in main.m dopo un crash

Ora con Xcode 4.2, ogni volta che l'applicazione si blocca, si ferma a main.m a questa linea

int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate"); 

che dà alcun indizio di ciò che sta causando l'incidente. Il problema può essere in qualsiasi classe ma si fermerà sempre su main.m quando si blocca.

c'è un modo per farlo funzionare di nuovo correttamente?

grazie

nota: ho chiesto questo prima su SO, ma la soluzione, dato che il tempo è stato dimostrato di essere non soddisfacente e il problema persiste.

+0

Per riferimento futuro, non inviare di nuovo la stessa domanda. Modifica la domanda originale per fornire nuove informazioni e tornare alla prima pagina. –

+0

Ho chiesto di cancellare quello vecchio. – SpaceDog

risposta

42

Hanno cambiato il comportamento, seguono this tutorial to break on all exceptions

EDIT:(Link potrebbe marcire, così ho duplicherà le info qui)

Una delle gemme nascoste in Xcode 4.2 è la “Eccezione Funzione "Punto di interruzione". Una volta abilitato, la tua vita di debug diventa molto più semplice perché ogni volta che un'eccezione viene lanciata nella tua app, Xcode visualizzerà la riga di codice che ha causato l'eccezione. Ciò è particolarmente utile se la finestra dello stack delle chiamate è vuota (cosa che ho visto succedere a volte mentre si lavora su app iOS). Invece di fare affidamento su un breve messaggio di errore nel pannello Output, che non contiene molto più del tipo di eccezione e del suo messaggio di errore, si può vedere esattamente dove si trova il problema!

È possibile aggiungere un punto di interruzione Eccezione aprendo il riquadro Breakpoint Navigatore, e facendo clic sul pulsante X nell'angolo in basso a sinistra:

Dopo aver cliccato sul “... Aggiungi eccezione Breakpoint” voce di menu , si vedrà questo punto di vista la configurazione breakpoint apre:

Fare clic sul pulsante Fine e vi sarà il nuovo punto di interruzione di eccezione nella vostra lista di B reakpoints. Se si vuole avere tutti i tuoi spazi di lavoro Xcode includono l'eccezione Breakpoint, pulsante destro del mouse (Ctrl + clic) su di esso e aprire il “Sposta punto di interruzione per” voce di menu:

Dopo aver cliccato su “Utente” nel sottomenu, vedrete che il punto di interruzione di eccezione si trova nel gruppo di utenti di punti di interruzione. Apri un altro progetto e verrà automaticamente incluso nell'elenco dei punti di interruzione.

Felice debug!

+13

Grazie. Devono essere pazzi. Qual è il punto di questo cambiamento? Rendi miserabili le vite degli sviluppatori? Grazie!!!!!!!!!!!!!!!! – SpaceDog

+0

un modo per impostare questo come permanente su xcode? – SpaceDog

+0

il bit alla fine del tutorial su come spostarlo in "Utente" lo rende permanente per il progetto – BarrettJ

5

Basta provare i seguenti passaggi che hanno funzionato per me.

  1. Aprire Preferenze, selezionare la scheda Comportamenti.
  2. Selezionare "Esegui uscite in modo imprevisto" dalla colonna di sinistra.
  3. Selezionare "Mostra debugger con viste correnti".

Purtroppo questo è ritornata ad main.m nell'editor :) ancora una volta Ora è necessario seguire i passaggi qui sotto

  1. Apri Preferenze, selezionare la scheda Comportamenti.
  2. basta andare su "run completa"
  3. C'è trovare la linea "Show" e fare clic sulla casella di controllo
  4. Sulla stessa linea di modificare obiettivo di andare a "corrente" nel menu a discesa.

Questo dovrebbe funzionare

+1

wow. Prossima versione Apple dovrebbe rendere più difficile la configurazione. Grazie – SpaceDog

+0

Hahah! Hanno ancora ** ESATTANO ** gli stessi bug. Non ha senso passare a un file che non ti dice nulla. Se deseleziono tutte le caselle, presumo (come Apple mi ha insegnato) che NOTING accade. Invece succede qualcosa. * "Se l'utente non vuole fare nulla per questo evento, passa a un file casuale senza senso" * Triste. –

Problemi correlati