Bearbeiten

Häufig gestellte Fragen: Suchtool für Debuggerfeatures

In dieser Dokumentation werden häufige Fragen zu Visual Studio-Features für das Debuggen behandelt. Außerdem werden Aufgaben oder Probleme beim Debuggen dem relevanten Feature im Visual Studio-Debugger zugeordnet. Diese Links decken Aufgaben oder Themen wie Debuggen von Multithreadanwendungen, Codenavigation, Arbeitsspeicherverlust, Überprüfung von Variablen, Verwendung von Haltepunkten, Debuggen von externem Code und vieles mehr ab. Einen allgemeineren Überblick über die Funktionen des Debuggers finden Sie unter Ein erster Blick auf den Debugger.

Haltepunkte

  • Wie halte ich den ausgeführten Code an, um eine Codezeile zu untersuchen, die möglicherweise einen Fehler enthält?

    Festlegen eines Haltepunkts. Weitere Informationen finden Sie unter Verwenden von Haltepunkten.

  • Hat meine Variable einen unerwarteten Wert? Oder möchte ich meine App überprüfen, wenn sie einen bestimmten Zustand erreicht?

    Probieren Sie einen bedingten Breakpoint aus, um mithilfe von bedingter Logik zu steuern, wo und wann ein Breakpoint aktiviert wird. Klicken Sie mit der rechten Maustaste auf einen Haltepunkt, um Bedingungen hinzuzufügen. Legen Sie die Bedingung auf TRUE fest, wenn die Variable dem unerwarteten Wert entspricht.

    Weitere Informationen finden Sie unter Breakpointbedingungen.

  • Wie protokolliere ich unter konfigurierbaren Bedingungen Informationen im Fenster „Ausgabe“, ohne meinen Code zu ändern oder anzuhalten?

    Mit Ablaufverfolgungspunkten können Sie Informationen im Ausgabefenster protokollieren. Hierfür können Sie Bedingungen konfigurieren, sodass der Code nicht geändert oder angehalten werden muss.

  • Woran erkenne ich es, wenn sich der Wert meiner Variablen ändert?

    Legen Sie für C++ einen Datenbreakpoint fest.

    Für Apps, die .NET Core 3 verwenden, können Sie ebenfalls einen Datenbreakpoint festlegen.

    Andernfalls können Sie nur für C# und F# eine Objekt-ID mit einem bedingten Breakpoint nachverfolgen.

  • Wie unterbreche ich die Ausführung, wenn ein anderer Haltepunkt erreicht wird?

    Setzen Sie einen abhängigen Haltepunkt, der die Ausführung nur dann unterbricht, wenn ein anderer Haltepunkt zuerst erreicht wird. Weitere Informationen finden Sie unter Abhängiger Haltepunkt.

  • Kann ich einen Haltepunkt nur einmal erreichen?

    Legen Sie einen temporären Haltepunkt fest, mit dem Sie den Code nur einmal unterbrechen können. Weitere Informationen finden Sie unter Temporärer Haltepunkt.

  • Kann ich Code innerhalb einer Schleife bei einer bestimmten Iteration anhalten?

    Setzen Sie einen abhängigen Haltepunkt, der die Ausführung nur dann unterbricht, wenn ein anderer Haltepunkt zuerst erreicht wird. Weitere Informationen finden Sie unter Trefferanzahl.

  • Wie kann ich Code am Anfang einer Funktion anhalten, wenn ich den Namen der Funktion, aber nicht ihre Position kenne?

    Hierfür können Sie einen Funktionsbreakpoint verwenden. Weitere Informationen finden Sie unter Festlegen von Funktionbreakpoints.

  • Wie kann ich Code am Anfang mehrerer Funktionen mit dem gleichen Namen anhalten?

    Wenn Sie über mehrere Funktionen mit dem gleichen Namen (überladene Funktionen oder Funktionen in unterschiedlichen Projekten) verfügen, können Sie einen Funktionsbreakpoint verwenden.

  • Verwalten und Nachverfolgen meiner Haltepunkte

    Verwenden Sie das Fenster Breakpoints. Weitere Informationen finden Sie unter Verwalten von Breakpoints.

  • Anhalten von Code und Debuggen, wenn eine bestimmte behandelte oder nicht behandelte Ausnahme ausgelöst wird

    Obwohl das Ausnahmehilfsprogramm zeigt, wo ein Fehler aufgetreten ist, können Sie den Debugger anweisen, eine Unterbrechung vorzunehmen, wenn eine Ausnahme ausgelöst wird, wenn Sie die Ausführung anhalten und den spezifischen Fehler debuggen möchten.

  • Festlegen eines Breakpoints aus der Aufrufliste

    Wenn Sie Code anhalten und debuggen möchten, während Sie den Ausführungsfluss untersuchen oder Funktionen in den Aufruflistenfenstern anzeigen, finden Sie weitere Informationen unter Festlegen eines Breakpoints im Aufruflistenfenster.

  • Anhalten von Code an einer bestimmten Assemblyanweisung

    Dies können Sie erreichen, indem Sie im Fenster „Disassemblierung“ einen Breakpoint festlegen.

  • Wie kann ich die Befehle zum schrittweisen Durchlaufen des Codes während des Debuggens erlernen?

    Weitere Informationen finden Sie unter Navigieren im Code mit dem Debugger.

  • Kann ich den Code bis zu einer bestimmten Zeile ausführen und dabei Haltepunkte überspringen, ohne sie zu entfernen oder zu deaktivieren?

    Für diese Szenarien können Sie „Ausführen bis Cursor“ erzwingen. Sie können Ihre Haltepunkte beibehalten, die vom Debugger übersprungen werden, bis er die Codezeile mit dem Cursor erreicht. Außerdem werden alle Unterbrechungsbedingungen des FirstChanceException-Typs übersprungen, die auftreten können. Weitere Informationen finden Sie unter Navigieren im Code mit dem Debugger.

  • Wenn meine Codezeile Aufrufe für verschiedene Methoden enthält, kann ich eine bestimmte Methode schrittweise ausführen?

    Klicken Sie mit der rechten Maustaste auf die Codezeile, um ein Kontextmenü aufzurufen, in dem Sie „Einzelschritt in Angabe“ auswählen können. Dadurch wird eine Liste aller Methoden eingeblendet, die Sie schrittweise ausführen können. Sie können nun die gewünschte Methode auswählen.

Überprüfen und Visualisieren von Daten

  • Wie kann ich den Wert von Variablen beim Ausführen der App überprüfen?

    Zeigen Sie mit der Maus auf Variablen, und verwenden Sie Datentipps, oder untersuchen Sie Variablen im Fenster für automatische und lokale Variablen.

  • Kann ich den sich ändernden Wert einer bestimmten Variablen überprüfen?

    Legen ein Überwachungselement für die Variable fest. Weitere Informationen finden Sie unter Festlegen eines Überwachungselements für Variablen.

  • Wie kann ich Zeichenfolgen anzeigen, die für das Debuggerfenster zu lang sind?

    In der Zeichenfolgenschnellansicht werden Zeichenfolgen gezeigt, die für einen Datentipp oder ein Debuggerfenster zu lang sind. Sie kann auch dabei helfen, falsch formatierte Zeichenfolgen zu ermitteln.
    Die integrierte Zeichenfolgenschnellansicht in Visual Studio bietet die Optionen Text, XML, HTML und JSON.

  • Wie kann ich große Sammlungsobjekte anzeigen?

    In der DataSet-Schnellansicht können Sie den Inhalt eines DataSet-, DataTable-, DataView- oder DataViewManager-Elements einsehen. In der IEnumerable-Schnellansicht können Sie Objekte wie Arrays, Listen usw. einsehen. Weitere Informationen finden Sie unter Tabellarische Schnellansichten.

Debuggen einer App, die bereits ausgeführt wird

  • Wie kann ich auf lokalen oder Remotecomputern ausgeführte Apps debuggen, mehrere Prozesse gleichzeitig debuggen, Apps debuggen, die nicht in Visual Studio erstellt wurden bzw. die ich nicht in Visual Studio mit dem angefügten Debugger gestartet habe?

    Weitere Informationen finden Sie unter Anfügen an laufenden Prozess.

  • Wie kann ich wiederholt an dieselbe Anwendung anfügen?

    Sie können Erneut an Prozess anfügen (UMSCHALT+ALT+P) auswählen, um das Debuggen Ihrer Anwendung mit einem Klick zu starten, ohne jedes Mal das Dialogfeld „An Prozess anfügen“ durchlaufen zu müssen. Weitere Informationen finden Sie unter Erneut an Prozess anfügen.

Debuggen von Multithreadanwendungen

  • Wie kann ich eine Multithreadanwendung debuggen? Oder reagiert meine Anwendung nicht?

    Weitere Informationen zur Problembehandlung finden Sie unter Fenster „Parallele Stapel“.

  • Wie kann ich die Reihenfolge anzeigen, in der Funktionen aufgerufen werden?

    Weitere Informationen finden Sie unter Anzeigen der Aufrufliste.

Analysieren des Arbeitsspeichers

  • Tritt in Ihrer Anwendung ein Arbeitsspeicherverlust auf?

    Erstellen Sie eine Momentaufnahme, und öffnen Sie sie zur weiteren Problembehandlung mit dem Arbeitsspeichertool. Weitere Informationen finden Sie unter Messen der Arbeitsspeicherauslastung.

  • Wie kann ich die Arbeitsspeicherauslastung für native oder verwaltete Anwendungen analysieren?

    Verwenden Sie das Arbeitsspeichertool von Visual Studio über Livedebuggen, Heap-Abbilddateien oder den Leistungs-Profiler.
    Siehe Auswählen eines Speicheranalysetools.

  • Wie kann ich die Arbeitsspeicherauslastung für native oder verwaltete Anwendungen analysieren, ohne einen Debugger anzufügen? Verwenden Sie den Leistungs-Profiler von Visual Studio mit aktiviertem Tool „Arbeitsspeicherauslastung“.
    Weitere Informationen finden Sie unter Analysieren der Arbeitsspeicherauslastung.

  • Kann ich die Arbeitsspeicherauslastung zwischen zwei Zeitpunkten vergleichen?

    Vergleichen Sie Momentaufnahmen im Arbeitsspeichertool oder zwei Heap-Abbilddateien mithilfe der Diff-Funktionalität. Weitere Informationen finden Sie unter Analysieren der Arbeitsspeicherauslastung.

Debuggen von externem Code

  • Kann ich beim Debuggen ausschließlich Benutzercode anzeigen?

    Nur eigenen Code ist ein Visual Studio-Debugfeature, das automatisch Aufrufe von System-, Framework- und anderem Nichtbenutzercode überspringt. Im Fenster Aufrufstapel werden diese Aufrufe von „Nur eigenen Code“ in Frames mit [externem Code] reduziert. Weitere Informationen finden Sie unter Debuggen von Benutzercode mit „Nur eigenen Code“.

  • Wie kann ich die unformatierten Assemblyanweisungen anzeigen oder debuggen, die mein Programm ausführt?

    Dazu steht unter „Debuggen“ > „Fenster“ > „Disassemblierung“ das Fenster „Disassemblierung“ zur Verfügung. Sie können eine Anweisung nach der anderen durchlaufen und sogar Haltepunkte für einzelne Assemblyanweisungen setzen.

  • Kann ich Quellcode für .NET-Bibliotheken anzeigen?

    Aktivieren Sie „Microsoft-Symbolserver“ über „Debuggen“ > „Optionen“ > „Symbole“, um Symbole und Quelle für .NET-Bibliotheken herunterzuladen. Weitere Informationen finden Sie unter Angeben des Symbols.

  • Wie kann ich PDB-Dateien von einem bestimmten oder freigegebenen Standort oder Server laden?

    Konfigurieren Sie Ihre Symbolserver-Instanzen über „Debuggen“ > „Optionen“ >„Symbole“. Weitere Informationen finden Sie unter Angeben eines Symbols.

  • Wie kann ich eine bestimmte PDB-Datei nie laden? Oder wie kann ich sie immer laden?

    Konfigurieren Sie Ihre Ein- und Ausschlusslisten unter „Debuggen“ > „Optionen“ >„Symbole“.
    Weitere Informationen finden Sie unter Angeben eines Symbols.

Konfigurieren des Debuggens

  • Wie kann ich Debuggereinstellungen konfigurieren?

    Weitere Informationen zum Konfigurieren von Debuggeroptionen und Debuggerprojekteinstellungen finden Sie unter Debuggereinstellungen und -vorbereitung.

  • Wie kann ich die im Debugger angezeigten Informationen anpassen?

    Möglicherweise möchten Sie andere Informationen als den Objekttyp als Wert in anderen Debuggerfenstern anzeigen. Verwenden Sie für C#-, Visual Basic-, F#- und C++/CLI-Code das DebuggerDisplay-Attribut. Für erweiterte Optionen können Sie die Benutzeroberfläche auch anpassen, indem Sie eine benutzerdefinierte Schnellansicht erstellen. Verwenden Sie für natives C++ das NatVis-Framework.

Zusätzliche Aufgaben

  • Muss ich ein Speicherabbild speichern?

    Wenn die Ausführung während des Debuggens bei einem Fehler oder Haltepunkt angehalten wurde, klicken Sie auf Debuggen > Dump speichern unter. Weitere Informationen finden Sie unter Dumpdateien.

  • Wie analysiere ich eine Speicherabbilddatei?

    Öffnen Sie die Dumpdatei, indem Sie in Visual Studio Datei > Öffnen auswählen. Klicken Sie zum Starten des Debuggens auf Debug with Managed Only (Nur verwaltet debuggen), Debug with Native Only (Nur nativ debuggen), Debug with Mixed (Gemischt debuggen) oder Debug with Managed Memory (Mit verwaltetem Arbeitsspeicher debuggen). Weitere Informationen finden Sie unter Dumpdateien.

  • Kann ich Code während einer Debugsitzung bearbeiten?

    Verwenden Sie Bearbeiten und fortfahren. Verwenden Sie für XAML XAML Hot Reload.

  • Wie kann ich auf Remotecomputern debuggen?

    Weitere Informationen finden Sie unter Remote debugging (Remotedebuggen).

  • Wie kann ich Leistungsprobleme beheben?

    Weitere Informationen finden Sie unter Einführung in Profilerstellungstools

  • Wie behebe ich eine Ausnahme?

    Weitere Informationen finden Sie unter Beseitigen einer Ausnahme.