Verschieben des Ausführungszeigers zum Ändern des Ausführungsablaufs im Debugger

Während des Debuggens können Sie den Ausführungszeiger manuell verschieben, um die nächste Anweisung zu ändern, die im nächsten Schritt ausgeführt wird. Das Verschieben des Zeigers ist nützlich in Situationen wie dem Überspringen von Code, der einen bekannten Fehler enthält. Es handelt sich dabei um eine erweiterte Funktion des Debuggers.

Ändern des Ausführungsablaufs

Wenn die Ausführung des Debuggers angehalten ist, markiert ein gelber Pfeil am Rand des Quellcodes oder des Fensters Disassemblierung die Position der Anweisung, die als Nächstes ausgeführt wird. Sie können ändern, welche Anweisung als Nächstes ausgeführt wird, indem Sie diesen Pfeil verschieben. Sie können Code überspringen oder zu einer vorherigen Zeile zurückkehren.

Animation that shows how to move the pointer.

Animation that shows how to move the pointer.

Wenn Sie die nächste auszuführende Anweisung ändern möchten, muss sich der Debugger im Unterbrechungsmodus befinden. Ziehen Sie den gelben Pfeil im Quellcode oder im Fenster Disassemblierung auf eine andere Zeile, oder klicken Sie mit der rechten Maustaste auf die Zeile, die Sie als Nächstes ausführen möchten, und wählen Sie Nächste Anweisung festlegen aus.

Der Programmzähler springt sofort an die neue Position. Anweisungen zwischen den alten und neuen Ausführungspunkten werden nicht ausgeführt. Wenn Sie den Ausführungspunkt jedoch rückwärts verschieben, werden die Unterbrechungsanweisungen nicht rückgängig gemacht.

Achtung

  • Das Verschieben der nächsten Anweisung in eine andere Funktion oder einen anderen Bereich verursacht in der Regel eine Beschädigung der Aufrufliste, was zu einem Laufzeitfehler oder einer Ausnahme führt. Wenn Sie versuchen, die nächste Anweisung in einen anderen Bereich zu verschieben, gibt Ihnen der Debugger eine Warnung und die Möglichkeit, den Vorgang abzubrechen.
  • In Visual Basic können Sie die nächste Anweisung nicht in einen anderen Bereich oder eine andere Funktion verschieben.
  • Wenn in nativem C++ Laufzeitüberprüfungen aktiviert sind, kann das Festlegen der nächsten Anweisung eine Ausnahme verursachen, wenn die Ausführung das Ende der Methode erreicht.
  • Wenn Bearbeiten und Fortfahren aktiviert ist, schlägt Nächste Anweisung festlegen fehl, wenn Sie Änderungen vorgenommen haben, die Bearbeiten und Fortfahren nicht sofort neu zuordnen können. Diese Situation kann beispielsweise auftreten, wenn Sie Code in einem catch-Block bearbeitet haben. In diesem Fall werden Sie in einer Fehlermeldung darüber informiert, dass der Vorgang nicht unterstützt wird.
  • In verwaltetem Code können Sie die nächste Anweisung nicht verschieben, wenn:
    • Die nächste Anweisung und die aktuelle Anweisung befinden sich in verschiedenen Methoden.
    • Das Debuggen wurde über Just-In-Time-Debuggen gestartet.
    • Die Aufrufliste wird gerade entladen.
    • Eine System.StackOverflowException oder eine System.Threading.ThreadAbortException wurden ausgelöst.