2012-10-02 11 views
7

Mi piacerebbe sapere come eseguire il debug migliore in xcode. So come impostare un punto di interruzione, ma idealmente vorrei che il simulatore si fermasse e quindi passassi attraverso il codice ...Debugging in XCode - esecuzione di codice e punti di interruzione

Non passare attraverso i punti di interruzione ma passare attraverso il codice riga per riga in modo da poter vedere dove va, quali metodi vengono eseguiti ecc ...

E 'possibile, se sì, come?

risposta

23

Debug control icons in Xcode

In basso a sinistra della finestra del codice in Xcode 4 è possibile vedere i controlli passo di debug. Ognuno ha un breve testo alternativo per spiegarlo. Spiegherò in modo leggermente più dettagliato qui. Imparare a diventare un debugger esperto è oggetto di molti libri di testo.

Il pulsante di riproduzione testo alternativo: Continua l'esecuzione del programma. Probabilmente lo hai già trovato. Premendolo si avanza al punto di interruzione successivo.

La freccia che salta alt text: Passaggio. Premendo ripetutamente questo pulsante, potrai avanzare attraverso il tuo programma al livello attuale di portata proprio come farebbe il tuo programma. Ti permetterà di osservare il comportamento del tuo programma passo dopo passo attraverso il metodo corrente. Al termine del metodo corrente, Step over ti condurrà al metodo di chiamata un passo avanti nello stack del programma.

Il testo alt della freccia in giù: Passaggio in. Premendo questo pulsante seguirà il nuovo metodo nel suo ambito e ti consentirà di visualizzare il codice nel metodo chiamato se è stato compilato per il debug. Ad esempio, facendo clic su questo sulla riga di codice corrente nella finestra di debug sopra riportata si passa al metodo _generateSources, che si può quindi procedere con Passaggio sopra.

Il testo della freccia su alt: Uscire. Ti porta fuori dal contesto corrente e nel metodo di chiamata un passo avanti nello stack del programma. Questo si comporta in modo identico alla fine di un metodo che usa Step over, esegue il programma normalmente ed esegue tutte le linee di codice nello scope originale che non hai eseguito il debug usando Step over.

View of call stack

Cliccare sulla silhouette con lo sfondo blu per vedere lo stack di chiamate corrente. Lo stack delle chiamate passerà sempre dall'ambito corrente al primo metodo chiamato per avviare il programma. Ogni metodo che vedi qui è stato chiamato in sequenza per raggiungere - [HelloWorldLayer init]. Quando si preme Esci quindi la riga corrente del codice di esecuzione tornerà a - nodo [nodo CCNode] e se si dispone della fonte per esso è possibile sfogliarlo.

A sinistra sono le variabili locali correnti visibili dall'ambito della riga di codice attualmente in esecuzione (riga 76 in questa immagine). Queste variabili rappresentano il modo in cui è possibile utilizzare i comandi precedenti come Passaggio su. background e winSize sono variabili locali che sono state definite in questo ambito e sono attualmente in uso. Quando l'obiettivo sarà chiuso, saranno spariti. _cmd è un puntatore al selettore attualmente richiamato in Objective-C: - [HelloWorldLayer init]. Non ne avrai bisogno finché non sarai un debugger avanzato.self è il puntatore a un oggetto che contiene tutti i ivar che appartengono alla classe attualmente in esecuzione, HelloWorldLayer e objc_super è un puntatore alla classe padre di HelloWorldLayer.

+0

questo è il motivo per cui i luv Xcode – Goldname

8

Vorrei aggiungere le scorciatoie da tastiera alla risposta di @Thomson Corner.

  • Utilizzare "c" per continuare. 's' per fare un passo, 'n' per il prossimo, 'f' per finire. Non mi piace il funzionamento del debugger con il mouse. Quelle icone sono troppo piccole e ottenere il puntatore su di loro è un dolore (una volta ogni tanto). Sono sempre stato un tastierista ed è DAVVERO a proprio agio con la tastiera.

  • Si dovrebbe anche provare a utilizzare po - stampa valori variabili con suggerimenti tipo ahead. Come po _varName. Semplifica la verifica se una variabile è a valore zero, ecc.,

  • È anche possibile modificare gli alias di comando modificando ~/.lldbinit.

Ecco il tutorial ufficiale: http://lldb.llvm.org/tutorial.html. E un altro tutorial: http://www.informit.com/articles/article.aspx?p=1829415&seqNum=6. Ciò che ho sottolineato sopra sono le funzioni di debugging più elementari che i programmatori eseguono maggiormente. Ci sono più opzioni come punti di interruzione delle eccezioni e programmi di caricamento, ma sono abbastanza sicuro che saranno per un altro giorno se si sta appena iniziando.

+0

https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_help-command_shortcuts/MenuCommands/MenuCommands014.html dà una guida abbastanza completa per XCode collegamenti correnti supportato. –

Problemi correlati