Problembehandlung bei Haltepunkten im Visual Studio-Debugger

              Gilt für: Visual Studio

Breakpointwarnungen

Beim Debuggen weist ein Haltepunkt zwei mögliche visuelle Zustände auf:

  • Ein durchgezogener roter Kreis, wenn der Debugger erfolgreich einen Haltepunkt im Zielprozess festgelegt hat.
  • Ein leerer (weiß gefüllter) Kreis, bei dem entweder der Haltepunkt deaktiviert ist oder eine Warnung aufgetreten ist, wenn versucht wird, den Haltepunkt festzulegen.

Um den Unterschied zu ermitteln, zeigen Sie auf den Haltepunkt, und überprüfen Sie, ob eine Warnung vorhanden ist. In den folgenden beiden Abschnitten werden prominente Warnungen und deren Behebung beschrieben.

"Für dieses Dokument wurden keine Symbole geladen"

Wechseln Sie beim Debuggen zum Fenster Module (Windows-Module>debuggen>), und überprüfen Sie, ob Das Modul geladen ist.

  • Wenn Ihr Modul geladen ist, überprüfen Sie die Spalte Symbolstatus , um festzustellen, ob Symbole geladen wurden.
    • Wenn Symbole nicht geladen werden, überprüfen Sie das Symbol status, um das Problem zu diagnostizieren. Wählen Sie im Kontextmenü eines Moduls im Fenster Module die Option Informationen zum Symbol laden... aus, um zu sehen, wohin der Debugger gesucht hat, um Symbole zu laden. Weitere Informationen zum Laden von Symbolen finden Sie unter Angeben von Symbolen (PDB) und Quelldateien.
    • Wenn Symbole geladen werden, enthält das PDB keine Informationen zu Ihren Quelldateien. Einige mögliche Ursachen sind:
      • Wenn Ihre Quelldateien kürzlich hinzugefügt wurden, vergewissern Sie sich, dass eine aktuelle Version des Moduls geladen wird.
      • Es ist möglich, entfernte PDBs mit der Linkeroption /PDBSTRIPPED zu erstellen. Entfernte PDBs enthalten keine Quelldateiinformationen. Vergewissern Sie sich, dass Sie mit einer vollständigen PDB und nicht mit einer entfernten PDB arbeiten.
      • Die PDB-Datei ist teilweise beschädigt. Löschen Sie die Datei, und führen Sie einen sauber Build des Moduls aus, um das Problem zu beheben.
  • Wenn Ihr Modul nicht geladen ist, überprüfen Sie Folgendes, um die Ursache zu ermitteln:
    • Vergewissern Sie sich, dass Sie den richtigen Prozess debuggen.
    • Überprüfen Sie, ob Sie den richtigen Code debuggen. Welchen Codetyp der Debugger für das Debuggen konfiguriert ist, finden Sie im Fenster Prozesse (Debuggen> vonWindows-Prozessen>). Wenn Sie beispielsweise versuchen, C#-Code zu debuggen, vergewissern Sie sich, dass Ihr Debugger für den entsprechenden Typ und die entsprechende Version von .NET konfiguriert ist (z. B. Verwaltet (v4*) versus Managed (v2*/v3*) versus Managed (CoreCLR)).

"… der aktuelle Quellcode unterscheidet sich von der integrierten Version..."

Wenn eine Quelldatei geändert wurde und die Quelle nicht mehr mit dem Code übereinstimmt, den Sie debuggen, legt der Debugger standardmäßig keine Haltepunkte im Code fest. Normalerweise tritt dieses Problem auf, wenn eine Quelldatei geändert wird, aber der Quellcode nicht neu erstellt wurde. Um dieses Problem zu beheben, erstellen Sie das Projekt neu. Wenn das Buildsystem der Meinung ist, dass das Projekt bereits auf dem neuesten Stand ist, obwohl dies nicht der Fall ist, können Sie die Neuerstellung des Projektsystems erzwingen. Erstellen Sie das Projekt neu, indem Sie die Quelldatei erneut speichern oder die Buildausgabe vor dem Erstellen bereinigen.

In seltenen Szenarien möchten Sie möglicherweise debuggen, ohne über den entsprechenden Quellcode zu verfügen. Das Debuggen ohne übereinstimmenden Quellcode kann zu einer verwirrenden Debugerfahrung führen. Stellen Sie daher sicher, wie Sie fortfahren möchten.

Befolgen Sie eine der Optionen, um diese Sicherheitsüberprüfungen zu deaktivieren:

  • Um einen einzelnen Haltepunkt zu ändern, zeigen Sie im Editor auf das Breakpointsymbol, und wählen Sie das Symbol für Einstellungen (Zahnrad) aus. Dem Editor wird ein Vorschaufenster hinzugefügt. Am oberen Rand des Vorschaufensters befindet sich ein Link, der die Position des Haltepunkts angibt. Wählen Sie den Link aus, um die Änderung der Haltepunktposition zuzulassen, und aktivieren Sie Zulassen, dass sich der Quellcode vom Original unterscheidet.
  • Um diese Einstellung für alle Haltepunkte zu ändern, wechseln Sie zu Debugoptionen>und -einstellungen. Deaktivieren Sie auf der Seite Debuggen/Allgemein die Option Quelldateien erforderlich, die genau mit der ursprünglichen Version übereinstimmen . Stellen Sie sicher, dass Sie diese Option wieder aktivieren, wenn Sie das Debuggen abgeschlossen haben.

Der Haltepunkt wurde erfolgreich festgelegt (keine Warnung), aber nicht erreicht

Dieser Abschnitt enthält Informationen zur Behandlung von Problemen, wenn der Debugger keine Warnungen anzeigt. Der Haltepunkt ist während des aktiven Debuggens ein durchgezogener roter Kreis, aber der Haltepunkt wird nicht erreicht.

Hier sind einige Dinge, die Sie überprüfen sollten:

  1. Wenn Ihr Code in mehr als einem Prozess oder mehreren Computern ausgeführt wird, stellen Sie sicher, dass Sie den richtigen Prozess oder Computer debuggen.
  2. Vergewissern Sie sich, dass Ihr Code ausgeführt wird. Um zu testen, dass Ihr Code ausgeführt wird, fügen Sie der Codezeile, in der Sie versuchen, den Haltepunkt festzulegen, einen Aufruf System.Diagnostics.Debugger.Break von (C#/VB) oder __debugbreak (C++) hinzu, und erstellen Sie dann Ihr Projekt neu.
  3. Wenn Sie optimierten Code debuggen, stellen Sie sicher, dass die Funktion, in der Ihr Haltepunkt festgelegt ist, nicht in eine andere Funktion eingebunden wird. Der Debugger.Break in der vorherigen Überprüfung beschriebene Test kann auch zum Testen dieses Problems verwendet werden.
  4. Stellen Sie für Anfügen an Prozessszenarien sicher, dass Sie den richtigen Codetyp debuggen (z. B. Skriptcode im Vergleich zu .NET Framework im Vergleich zu .NET 5+). Um dies zu untersuchen, aktivieren Sie im Dialogfeld Anfügen an den Prozess die Option Anfügen an, und wählen Sie ggf. Auswählen aus, um den Codetyp zu ändern.

Ich habe einen Haltepunkt gelöscht, aber ich treffe ihn, wenn ich erneut mit dem Debuggen beginne.

Wenn Sie beim Debuggen einen Haltepunkt gelöscht haben, können Sie den Haltepunkt erneut erreichen, wenn Sie das nächste Mal mit dem Debuggen beginnen. Um das Erreichen dieses Haltepunkts zu beenden, stellen Sie sicher, dass alle Instanzen des Haltepunkts aus dem Fenster Haltepunkte entfernt werden.