Freigeben über


Erfahren Sie mehr über Produktivitätstipps und Tricks für den Debugger in Visual Studio

Lesen Sie dieses Thema, um einige Produktivitätstipps und Tricks für den Visual Studio-Debugger zu erfahren. Eine Übersicht über die grundlegenden Features des Debuggers finden Sie unter "Erster Blick auf den Debugger". In diesem Thema behandeln wir einige Bereiche, die nicht in der Featuretour enthalten sind.

Tastenkürzel

Eine Liste der am häufigsten verwendeten Tastenkombinationen im Zusammenhang mit dem Debuggen finden Sie im Abschnitt " Debuggen " in Tastenkombinationen.

Anheften von Datentipps

Wenn Sie beim Debuggen häufig mit dem Mauszeiger auf Datentipps zeigen, sollten Sie den Datentipp für die Variable anheften, um sich einen schnellen Zugriff zu verschaffen. Die Variable bleibt auch nach dem Neustart fixiert. Um den Datenhinweis anzuheften, klicken Sie auf das Pinsymbol, während Sie den Mauszeiger darüber halten. Sie können mehrere Variablen anheften.

Anheften eines Datentipps

Sie können Datentipps auch auf verschiedene andere Weise personalisieren, z. B. einen Datentipp angeheftet halten (einen Sticky-Datentipp) oder einen Datentipp transparent machen. Weitere Informationen finden Sie unter Anzeigen von Datenwerten in DataTips im Code-Editor.

Bearbeiten Sie Ihren Code, und fahren Sie mit dem Debuggen fort (C#, VB, C++)

In den meisten von Visual Studio unterstützten Sprachen können Sie Ihren Code in der Mitte einer Debugsitzung bearbeiten und das Debuggen fortsetzen. Um dieses Feature zu nutzen, klicken Sie mit Ihrem Cursor in den Code, während Sie im Debugger pausiert sind, bearbeiten Sie den Code und drücken Sie F5, F10oder F11, um mit dem Debuggen fortzufahren.

Bearbeiten und Fortsetzen des Debuggens

Weitere Informationen zur Verwendung des Features und zu Featurebeschränkungen finden Sie unter "Bearbeiten" und "Weiter".

Bearbeiten von XAML-Code und Fortsetzen des Debuggens

Informationen zum Ändern von XAML-Code während einer Debugsitzung finden Sie unter Schreiben und Debuggen von XAML-Code mit XAML Hot Reload.

Fehlerbehebung bei Problemen, die schwer zu reproduzieren sind

Wenn es schwierig oder zeitaufwändig ist, einen bestimmten Zustand in Ihrer App neu zu erstellen, überlegen Sie, ob die Verwendung eines bedingten Haltepunkts hilfreich sein kann. Sie können bedingte Haltepunkte und Filterhaltepunkte verwenden, um zu vermeiden, dass der App-Code unterbrochen wird, bis die App einen gewünschten Zustand erreicht (z. B. einen Zustand, in dem eine Variable fehlerhafte Daten speichert). Sie können Bedingungen mithilfe von Ausdrücken, Filtern, Trefferzählungen usw. festlegen.

So erstellen Sie einen bedingten Haltepunkt

  1. Klicken Sie mit der rechten Maustaste auf ein Haltepunktsymbol (die rote Kugel), und wählen Sie "Bedingungen" aus.

  2. Geben Sie im Fenster " Haltepunkteinstellungen " einen Ausdruck ein.

    Bedingter Breakpoint

  3. Wenn Sie an einem anderen Bedingungstyp interessiert sind, wählen Sie "Filter " anstelle des bedingten Ausdrucks im Dialogfeld " Haltepunkteinstellungen " aus, und folgen Sie dann den Filtertipps.

Konfigurieren der im Debugger anzuzeigenden Daten

Für C#-, Visual Basic- und C++-Code (nur C++/CLI-Code) können Sie dem Debugger mitteilen, welche Informationen mithilfe des DebuggerDisplay-Attributs angezeigt werden sollen. Für C++-Code können Sie dies auch mithilfe von Natvis-Visualisierungen tun.

Wiederholtes Anhängen an dieselbe Anwendung

Wenn Sie das feature "Anfügen an Prozess" verwenden, können Sie schnell eine Verbindung mit einem Prozess herstellen, dem Sie zuvor angefügt wurden, indem Sie "Debug>Erneut mit Prozess verbinden" (Umschalt++Alt++P) auswählen. Wenn Sie diesen Befehl auswählen, versucht der Debugger sofort, sich mit dem letzten Prozess zu verbinden, an den Sie angehängt haben, indem er zuerst versucht, die vorherige Prozess-ID zuzuordnen, und falls dies fehlschlägt, den vorherigen Prozessnamen anzupassen. Wenn keine Übereinstimmungen gefunden werden oder mehrere Prozesse denselben Namen haben, wird das Dialogfeld " An Prozess anfügen " geöffnet, sodass Sie den richtigen Prozess auswählen können.

Nachverfolgen eines out-of-scope-Objekts (C#, Visual Basic)

Es ist einfach, Variablen mithilfe von Debuggerfenstern wie dem Überwachungsfenster anzuzeigen. Wenn eine Variable im Überwachungsfenster jedoch nicht mehr gültig ist, stellen Sie möglicherweise fest, dass sie abgeblendt ist. In einigen App-Szenarien kann sich der Wert einer Variablen auch dann ändern, wenn die Variable außerhalb des Gültigkeitsbereichs liegt, und Sie können sie genau beobachten (z. B. kann eine Variable garbage collection erhalten). Sie können die Variable nachverfolgen, indem Sie im Überwachungsfenster eine Objekt-ID erstellen.

So erstellen Sie eine Objekt-ID

  1. Legen Sie einen Haltepunkt in der Nähe einer Variablen fest, die Sie nachverfolgen möchten.

  2. Starten Sie den Debugger (F5) und halten Sie am Haltepunkt an.

  3. Suchen Sie die Variable im Fenster "Locals " (Debuggen von > Windows > Locals), klicken Sie mit der rechten Maustaste auf die Variable, und wählen Sie " Objekt-ID erstellen" aus.

    Erstellen einer Objekt-ID

  4. Es sollte eine $ und eine Zahl im Fenster Lokale angezeigt werden. Diese Variable ist die Objekt-ID.

  5. Klicken Sie mit der rechten Maustaste auf die Objekt-ID-Variable und wählen Sie 'Überwachung hinzufügen' aus.

Weitere Informationen finden Sie unter Erstellen einer Objekt-ID.

Anzeigen von Rückgabewerten für Funktionen

Wenn Sie Rückgabewerte für Ihre Funktionen anzeigen möchten, sehen Sie sich die Funktionen an, die im Fenster "Autos " angezeigt werden, während Sie den Code durchlaufen. Um den Rückgabewert für eine Funktion anzuzeigen, stellen Sie sicher, dass die funktion, an der Sie interessiert sind, bereits ausgeführt wurde (drücken Sie F10 einmal, wenn Sie derzeit beim Funktionsaufruf beendet werden). Wenn das Fenster geschlossen ist, verwenden Sie "Debuggen > von Windows > Autos ", um das Fenster " Autos " zu öffnen.

AutoFenster

Darüber hinaus können Sie Funktionen im Direktfenster eingeben, um Rückgabewerte anzuzeigen. (Öffnen Sie es mit Debug > Windows > Immediate.)

Direktfenster

Sie können auch Pseudovariablen im Überwachungsfenster und Direktfenster verwenden, z. B. $ReturnValue.

Überprüfen von Zeichenfolgen in einem Visualisierungsprogramm

Beim Arbeiten mit Zeichenfolgen kann es hilfreich sein, die gesamte formatierte Zeichenfolge anzuzeigen. Wenn Sie eine Nur-Text-, XML-, HTML- oder JSON-Zeichenfolge anzeigen möchten, klicken Sie auf das Lupensymbol VisualizerIcon Visualizer, während Sie mit dem Mauszeiger auf eine Variable zeigen, die einen Zeichenfolgenwert enthält.

Öffnen Sie einen Zeichenfolgenvisualisierer

Ein String-Visualizer kann Ihnen abhängig von der Zeichenfolgenart dabei helfen, herauszufinden, ob eine Zeichenfolge fehlerhaft ist. Ein leeres Wertfeld gibt beispielsweise an, dass die Zeichenfolge vom Visualizertyp nicht erkannt wird. Weitere Informationen finden Sie im Dialogfeld „Zeichenfolgenvisualisierer“.

JSON String Visualizer

Für einige andere Typen wie DataSet- und DataTable-Objekte, die in den Debuggerfenstern angezeigt werden, können Sie auch eine integrierte Visualisierung öffnen.

Analysieren der Speicherauslastung

Sie können Momentaufnahmen des Heaps erstellen und vergleichen, die Speicherauslastung optimieren und Speicherlecks mit Werkzeugen zur Analyse der Speichernutzung identifizieren. Weitere Informationen finden Sie unter Auswählen eines Speicheranalysetools.

Erstellen einer Dumpdatei

Eine Dumpdatei ist eine Momentaufnahme, die den Prozess zeigt, der ausgeführt wurde, und Module, die zu einem bestimmten Zeitpunkt für eine App geladen wurden. Ein Dump, der Heap-Informationen enthält, umfasst auch eine Momentaufnahme des Speichers der App zu diesem Zeitpunkt. Dumps werden hauptsächlich zum Debuggen von Problemen von Computern verwendet, auf die Entwickler keinen Zugriff haben.

Wenn Sie eine Speicherabbilddatei speichern müssen, wählen Sie > aus.

Um eine Speicherabbilddatei zu analysieren, wählen Sie "Datei > öffnen " in Visual Studio aus. Um das Debugging mit der Speicherabbilddatei zu starten, wählen Sie "Nur mit verwaltetem Debuggen", "Nur mit einheimischem Debuggen", "Gemischtes Debuggen" oder "Debuggen mit verwaltetem Speicher" aus.

Weitere Informationen finden Sie unter Dumpdateien.

Unterbrechen von Code bei behandelten Ausnahmen

Der Debugger unterbricht Ihren Code bei unbehandelten Ausnahmen. Allerdings können behandelte Ausnahmen (z. B. Ausnahmen, die innerhalb eines try/catch Blocks auftreten) auch eine Quelle von Fehlern sein, und Sie können untersuchen, wann sie auftreten. Sie können den Debugger so konfigurieren, dass er in Code für behandelte Ausnahmen unterteilt wird, indem Sie Optionen im Dialogfeld "Ausnahmeeinstellungen " konfigurieren. Öffnen Sie dieses Dialogfeld, indem Sie "Windows-Ausnahmeeinstellungen > debuggen>" auswählen.

Im Dialogfeld "Ausnahmeeinstellungen können Sie dem Debugger mitteilen, dass er bei bestimmten Ausnahmen in den Code eindringt. In der folgenden Abbildung wechselt der Debugger immer dann in Ihren Code, wenn ein System.NullReferenceException Fehler auftritt. Weitere Informationen finden Sie unter Verwalten von Ausnahmen.

Dialogfeld "Ausnahmeeinstellungen" ExceptionSettingsDialogBox

Ändern des Ausführungsflusses

Wenn der Debugger in einer Codezeile angehalten wurde, verwenden Sie die Maus, um den gelben Pfeilzeiger auf der linken Seite zu erfassen. Verschieben Sie den gelben Pfeilzeiger auf einen anderen Punkt im Codeausführungspfad. Anschließend verwenden Sie F5 oder einen Schrittbefehl, um die Ausführung der App fortzusetzen.

Den Ausführungspunkt verschieben

Durch Ändern des Ausführungsflusses können Sie z. B. verschiedene Codeausführungspfade testen oder Code erneut ausführen, ohne den Debugger neu zu starten. Weitere Informationen finden Sie unter Verschieben des Ausführungszeigers.

Warnung

Oft müssen Sie mit dieser Funktion vorsichtig sein, und Sie sehen eine Warnung im Tooltip. Möglicherweise werden auch andere Warnungen angezeigt. Durch Das Verschieben des Zeigers kann Ihre App nicht in einen früheren Anwendungszustand zurückgesetzt werden.

Debuggen von Deadlocks und Rennbedingungen

Wenn Sie die Arten von Problemen debuggen müssen, die für Multithread-Apps üblich sind, hilft es häufig, den Speicherort von Threads beim Debuggen anzuzeigen. Sie können dies ganz einfach mithilfe der Schaltfläche " Threads in Quelle anzeigen " tun.

So zeigen Sie Threads im Quellcode an:

  1. Klicken Sie beim Debuggen auf die Schaltfläche Threads in der Quelle anzeigenThreads in Source in der Symbolleiste Debug.

  2. Betrachten Sie den Bundsteg auf der linken Seite des Fensters. In dieser Zeile sehen Sie ein Threadmarker-SymbolThread-Markierer, das zwei Fäden ähnelt. Die Threadmarkierung gibt an, dass an dieser Position ein Thread angehalten wird.

    Bitte beachten Sie, dass eine Threadmarkierung teilweise von einem Haltepunkt verdeckt sein kann.

  3. Zeigen Sie mit dem Mauszeiger auf den Threadmarker. Es wird eine Dateninfo angezeigt. Die Datenanzeige teilt Ihnen den Namen und die Thread-ID-Nummer für jeden gestoppten Thread mit.

    Sie können auch die Position von Threads im Fenster "Parallele Stapel" anzeigen.

Machen Sie sich damit vertraut, wie der Debugger mit Ihrer App verbunden wird (C#, C++, Visual Basic, F#)

Zum Anfügen an Ihre ausgeführte App lädt der Debugger Symboldateien (PDB), die für den genauen Build der App generiert wurden, die Sie debuggen möchten. In einigen Szenarien kann ein wenig Wissen über Symboldateien hilfreich sein. Sie können untersuchen, wie Visual Studio Symboldateien mithilfe des Fensters "Module " lädt.

Öffnen Sie das Modulfenster beim Debuggen, indem Sie "Windows-Module > debuggen" >auswählen. Das Modulfenster kann Ihnen mitteilen, welche Module der Debugger als Benutzercode oder "Mein Code" behandelt, und den Symbolladestatus für das Modul. In den meisten Szenarien findet der Debugger automatisch Symboldateien für Benutzercode, aber wenn Sie .NET-Code, Systemcode oder Bibliothekscode eines Drittanbieters ausführen möchten, sind zusätzliche Schritte erforderlich, um die richtigen Symboldateien abzurufen.

Symbolinformationen im Modulfenster anzeigen

Sie können Symbolinformationen direkt aus dem Fenster "Module " laden, indem Sie mit der rechten Maustaste klicken und "Symbole laden" auswählen.

Manchmal versenden App-Entwickler Apps ohne die übereinstimmenden Symboldateien (um den Speicherbedarf zu reduzieren), behalten sie jedoch eine Kopie der übereinstimmenden Symboldateien für den Build bei, damit sie eine veröffentlichte Version später debuggen können.

Informationen dazu, wie der Debugger Code als Benutzercode klassifiziert, finden Sie unter Just My Code. Weitere Informationen zu Symboldateien finden Sie unter Angeben von Symboldateien (PDB) und Quelldateien im Visual Studio-Debugger.

Erfahren Sie mehr

Weitere Tipps und Tricks und ausführlichere Informationen finden Sie in den folgenden Blogbeiträgen:

Tastenkombinationen