Debugging in XCode - Durchlaufen von Code und Haltepunkten [geschlossen]

7

Ich würde gerne wissen, wie man in xcode am besten debuggt. Ich weiß, wie man einen Unterbrechungspunkt setzt, aber im Idealfall möchte ich, dass der Simulator aufhört und dann den Code durchläuft ...

Nicht durch die Breakpoints gehen, sondern Schritt für Schritt durch den Code gehen, damit ich sehen kann, wohin es geht, welche Methoden ausgeführt werden usw. ...

Ist das möglich, wenn ja wie?

    
StuartM 02.10.2012, 20:06
quelle

2 Antworten

23

Unten links in Ihrem Code-Fenster in Xcode 4 können Sie die Debug-Schritt-Kontrollen sehen. Jeder hat einen kurzen Alternativtext, um es zu erklären. Ich werde das hier etwas genauer erklären. Das Lernen eines Experten-Debuggers ist Gegenstand vieler Lehrbücher.

Die Wiedergabetaste alt text: Programmausführung fortsetzen . Das hast du wahrscheinlich schon gefunden. Drücken Sie die Taste, um zum nächsten Haltepunkt zu gelangen.

Der springende Pfeil Alternativtext: Schritt über . Durch wiederholtes Drücken dieser Taste können Sie Ihr Programm auf der aktuellen Ebene des Oszilloskops genau so durchlaufen, wie Sie es von Ihrem Programm gewohnt sind. Es erlaubt Ihnen, das Verhalten Ihres Programms Schritt für Schritt durch die aktuelle Methode zu beobachten. Wenn die aktuelle Methode beendet ist, gelangen Sie mit Step over auf die aufrufende Methode im Programmstack.

Der nach unten weisende Alt-Text: Tritt in . Wenn Sie auf diese Schaltfläche klicken, wird die neue Methode in ihrem Gültigkeitsbereich angezeigt und Sie können Code in der aufgerufenen Methode anzeigen, wenn er zum Debuggen kompiliert wurde. Wenn Sie beispielsweise im obigen Debug-Fenster auf die aktuelle Codezeile klicken, gelangen Sie zur _generateSources-Methode, die Sie dann mit Step over durchlaufen können.

Der Pfeil nach oben Alt: Aussteigen . Entfernt Sie aus dem aktuellen Kontext und in die aufrufende Methode eine Stufe im Programm-Stack. Dies verhält sich genauso wie das Beenden einer Methode mit Step over, Ausführen des Programms als normal und Ausführen aller Codezeilen im ursprünglichen Bereich, die Sie nicht mit Step over debuggt haben.

Klicken Sie auf die Silhouette mit dem blauen Hintergrund, um den aktuellen Call-Stack zu sehen. Der Aufrufstack wird immer den gesamten Weg von Ihrem aktuellen Bereich bis zur ersten Methode durchlaufen, die zum Starten Ihres Programms aufgerufen wurde. Jede Methode, die Sie hier sehen, wurde nacheinander aufgerufen, um - [HelloWorldLayer init] zu erreichen. Wenn Sie Aussteigen drücken, wird die aktuelle Zeile des Ausführungscodes zu - [CCNode node] zurückkehren, und wenn Sie die Quelle dafür haben, können Sie sie durchsuchen.

Links sind die aktuellen lokalen Variablen zu sehen, die aus dem Bereich der aktuell ausgeführten Codezeile (Zeile 76 in diesem Bild) sichtbar sind. Mit diesen Variablen können Sie die oben genannten Befehle wie Schrittweise verwenden. background und winSize sind lokale Variablen, die in diesem Bereich definiert wurden und derzeit verwendet werden. Wenn der Bereich verlassen wird, sind sie weg. _cmd ist ein Zeiger auf den Selektor, der gerade in Objective-C aufgerufen wird: - [HelloWorldLayer init]. Sie werden dies nicht benötigen, bis Sie ein fortgeschrittener Debugger sind. self ist der Zeiger auf ein Objekt, das alle Ivars enthält, die zur gerade ausgeführten Klasse HelloWorldLayer gehören, und objc_super ist ein Zeiger auf die Elternklasse von HelloWorldLayer.

    
Thomson Comer 02.10.2012, 20:18
quelle
8

Ich würde der Antwort von @Thomson Corner Tastaturkürzel hinzufügen.

  • Verwenden Sie "c", um fortzufahren. 's' zum Schritt, 'n' zum nächsten, 'f' zum Ziel. Ich mag es nicht, den Debugger mit der Maus zu bedienen. Diese Symbole sind zu klein und es ist ein Schmerz (manchmal), den Zeiger darauf zu setzen. Ich war schon immer ein Keyboard-Typ und es ist wirklich bequem mit der Tastatur.

  • Sie sollten auch versuchen, po zu verwenden - es gibt Variablenwerte mit Vorschlägen des Typs ahead aus. Wie po _varName . Macht es einfach zu überprüfen, ob eine Variable nullwertig usw. ist,

  • Sie können die Aliasnamen auch ändern, indem Sie ~/.lldbinit ändern.

Hier ist das offizielle Tutorial: Ссылка . Und noch ein Tutorial: Ссылка . Was ich oben erwähnt habe, sind die grundlegendsten Debugging-Funktionen, die Programmierer meistens ausführen. Es gibt mehr Optionen wie Ausnahme-Breakpoints und Lade-Programme, aber ich bin mir ziemlich sicher, dass sie für einen anderen Tag sind, wenn Sie gerade erst anfangen.

    
Ravi 02.10.2012 20:28
quelle

Tags und Links