2013-08-01 1 views
5

Ho messo in pausa la mia app e ho provato a stampare qualcosa sulla console. (ad esempio po foo()). Dopo averlo fatto, ho ricevuto il seguente messaggio:"L'esecuzione è stata interrotta, motivo: punto di interruzione" durante il tentativo di stampare qualcosa dalla console Xcode

error: Execution was interrupted, reason: breakpoint 2.1.
The process has been returned to the state before execution.

Tuttavia, non ci sono punti di interruzione in quella funzione. Perché mi mostra questo errore e non eseguo la funzione?

Questo è su Xcode 4.6.

risposta

5

Si scopre che il punto di interruzione in questione (2.1) era il punto di interruzione Tutte le eccezioni. Il metodo che stavo chiamando ha sollevato un'eccezione che ha causato il punto di interruzione Tutte le eccezioni. po interromperà l'esecuzione una volta raggiunto un punto di interruzione (vedere this answer per ulteriori informazioni).

Se si disattiva i tutte le eccezioni breakpoint ed eseguirlo di nuovo, è più chiaro che c'era un'eccezione:

error: Execution was interrupted, reason: signal SIGSTOP. 
The process has been returned to the state before execution. 

Se si lascia sempre il tutte le eccezioni breakpoint abilitata, il messaggio può essere ambigua: ha raggiunto un punto di interruzione perché c'era davvero un punto di interruzione da qualche parte lungo il percorso di esecuzione o era stata sollevata un'eccezione?

Una soluzione alternativa (che non richiede la disattivazione del punto di interruzione Tutte le eccezioni) utilizza expr anziché po (vedere il collegamento sopra per una descrizione dei seguenti flag).

Esecuzione expr -u 0 -o -- foo() produce il seguente output:

error: Execution was interrupted, reason: breakpoint 2.1 -2.1. 
The process has been left at the point where it was interrupted. 
* thread #1: tid = [...] libobjc.A.dylib`objc_exception_throw, stop reason = breakpoint 2.1 -2.1 
    frame #0: [...] libobjc.A.dylib`objc_exception_throw 

La stringa objc_exception_throw è un suggerimento che un exception was raised.