Anzeigen des Aufrufstapels und Verwenden des Anrufstapelfensters im Debugger
Mithilfe des Fensters Aufrufstapel können Sie die Funktions- oder Prozeduraufrufe anzeigen, die sich derzeit im Stapel befinden. Im Fenster Aufrufstapel wird die Reihenfolge angezeigt, in der Methoden und Funktionen aufgerufen werden. Der Aufrufstapel ist eine gute Möglichkeit, den Ausführungsfluss einer App zu untersuchen und zu verstehen.
Wenn für einen Teil der Aufrufliste keine Debugsymbole verfügbar sind, können im Fenster Aufrufliste für diesen Teil der Aufrufliste möglicherweise keine korrekten Informationen angezeigt werden. Stattdessen wird Folgendes angezeigt:
[Frames below may be incorrect and/or missing, no symbols loaded for name.dll]
Anmerkung
Die angezeigten Dialogfelder und Menübefehle unterscheiden sich je nach den aktiven Einstellungen oder Editionen möglicherweise von den hier beschriebenen Befehlen. Um Ihre Einstellungen zu ändern, wählen Sie Import- und Exporteinstellungen im Menü Extras aus. Weitere Informationen finden Sie unter Zurücksetzen aller Einstellungen. Das Call Stack Fenster ist ähnlich der Debug-Perspektive von einigen IDEs wie Eclipse.
Anzeigen der Aufrufliste während des Debuggens
Wählen Sie beim Debuggen im Menü DebugWindows > Aufrufliste aus, oder drücken Sie ctrl
+alt
+C
.
Ein Pfeil identifiziert den Stapelrahmen, wo sich der Ausführungszeiger derzeit befindet. Standardmäßig werden die Informationen dieses Stack-Frames in den Fenstern Quelle, Locals, Autos, Watchund Disassembly angezeigt. Wechseln Sie zu einem anderen Stapelrahmen, um den Debuggerkontext in einen anderen Rahmen für den Stapel zu ändern.
Ein gelber Pfeil identifiziert den Stapelrahmen, in dem sich der Ausführungszeiger derzeit befindet. Standardmäßig werden die Informationen dieses Stapelrahmens in der Quelle und in den Fenstern Lokale Variablen, Auto, Überwachung und Disassemblierung angezeigt. Um den Debugger-Kontext zu einem anderen Frame im Stack zu ändern, in einen anderen Stack-Framewechseln.
Sie können beim Debuggen auch Ausnahme-Stackframes im Aufrufstapel anzeigen. Weitere Informationen finden Sie unter Anzeigen der Aufrufliste im Ausnahmehilfsprogramm.
Anzeigen von IDE-generiertem Code im Fenster „Aufrufliste“
Ändern Sie zum Anzeigen von externem oder IDE-generiertem Code die Option „Externen Code anzeigen“, oder klicken Sie mit der rechten Maustaste auf das Fenster Aufrufliste, und wählen Sie Externen Code anzeigen aus.
Um externen oder nicht benutzerfremden Code anzuzeigen, schalten Sie die Schaltfläche Externen Code anzeigen auf der Symbolleiste des Aufrufstapels ein, oder klicken Sie mit der rechten Maustaste auf das Fenster Anrufstapel, und wählen Sie Externen Code anzeigenaus.
Nicht-Benutzercode ist ein Code, der nicht angezeigt wird, wenn Just My Code aktiviert ist. In verwaltetem Code sind Nichtbenutzercode-Frames standardmäßig ausgeblendet. Die folgende Notation wird anstelle der Nicht-Benutzer-Code-Frames angezeigt:
[<External Code>]
Wechseln zu einem anderen Stapelframe (Ändern des Debuggerkontexts)
Klicken Sie im Fenster Aufrufliste mit der rechten Maustaste auf den Stapelrahmen, dessen Code und Daten angezeigt werden sollen.
Sie können auch im Call Stack Fenster auf einen Frame doppelklicken, um zu diesem Frame zu wechseln.
Wählen Sie aus, um zu Framezu wechseln.
Ein grüner Pfeil mit einem geschweiften Schwanz wird neben dem ausgewählten Stapelrahmen angezeigt. Der Ausführungszeiger verbleibt im ursprünglichen Rahmen, der noch immer durch einen gelben Pfeil gekennzeichnet ist. Wenn Sie Schritt oder Weiter im Menü Debuggen auswählen, wird die Ausführung im ursprünglichen Frame fortgesetzt, nicht im ausgewählten Frame.
Alle zugehörigen Threads anzeigen
Schalten Sie die Schaltfläche "Alle Threads anzeigen" ein, um alle zugehörigen Threads im Fenster "Paralleler Stapel"anzuzeigen.
Suchen in der Aufrufliste
Sie können nach relevanten Anrufstapelframes suchen, indem Sie relevante Suchbegriffe in das Suchfeld eingeben, das sich in der oberen linken Ecke des Anrufstapelfensters befindet. Die entsprechenden Aufruflistenrahmen werden hervorgehoben.
Anzeigen des Quellcodes für eine Funktion im Aufrufstapel
Klicken Sie im Fenster Aufrufliste mit der rechten Maustaste auf die Funktion, deren Quellcode Sie anzeigen möchten, und wählen Sie Gehe zu Quellcode aus.
Ausführung bis zu einer angegebenen Funktion im Fenster „Aufrufliste“
Wählen Sie im Fenster Aufrufliste die Funktion aus, klicken Sie mit der rechten Maustaste darauf, und wählen Sie dann die Option Ausführen bis Cursor aus.
Festlegen eines Haltepunkts am Punkt der Beendigung eines Funktionsaufrufs
Siehe Festlegen eines Haltepunkts bei einer Aufrufstapelfunktion.
Anzeigen von Aufrufen für oder von anderen Threads
Klicken Sie mit der rechten Maustaste auf das Fenster Aufrufliste, und wählen Sie Aufrufe zu/von anderen Threads einschließen aus.
Visuelles Nachverfolgen des Aufrufstapels
In Visual Studio Enterprise (nur) können Sie Codezuordnungen für den Aufrufstapel beim Debuggen anzeigen.
Öffnen Sie das Kontextmenü im Fenster Aufrufliste. Wählen Sie Aufrufstapel auf Code Map anzeigen (STRG + UMSCHALT + `).
Weitere Informationen finden Sie unter Erstellen einer visuellen Zuordnung der Aufrufliste beim Debuggen (C#, Visual Basic, C++, JavaScript).
Anzeigen des Demontagecodes für eine Funktion im Aufrufstapel (C#, C++, Visual Basic, F#)
Klicken Sie im Fenster Aufrufliste mit der rechten Maustaste auf die Funktion, deren Disassemblycode Sie anzeigen möchten, und wählen Sie Gehe zu Disassembly aus.
Ändern der angezeigten optionalen Informationen
Klicken Sie mit der rechten Maustaste im Fenster Aufrufliste, und aktivieren bzw. deaktivieren Sie <Gewünschte Informationen anzeigen>.
Automatisches Dekompilieren von externem .NET-Code
Ab Visual Studio 2022, Version 17.7, können Sie .NET-Code automatisch dekompilieren, indem Sie im Aufrufstapelfenster auf externen Code doppelklicken. Weitere Informationen finden Sie unter Generieren von Quellcode aus .NET-Assemblys beim Debuggen.
Laden von Symbolen für ein Modul (C#, C++, Visual Basic, F#)
Im Fenster Aufrufliste können Sie Debugsymbole für Code laden, für den derzeit keine Symbole geladen sind. Diese Symbole können .NET- oder Systemsymbole sein, die von den öffentlichen Microsoft-Symbolservern heruntergeladen werden, oder Symbole in einem Symbolpfad auf dem Computer, den Sie debuggen.
Weitere Informationen finden Sie unter Angeben von Symboldateien (PDB-Dateien) und Quelldateien im Visual Studio Debugger (C#, C++, Visual Basic, F#).
So laden Sie Symbole
Klicken Sie im Fenster Aufrufliste mit der rechten Maustaste auf einen Stapelrahmen, für den keine Symbole geladen werden. Der Rahmen wird abgeblendet.
Zeigen Sie auf Symbole laden, und klicken Sie dann auf Microsoft-Symbolserver (sofern verfügbar). Durchsuchen Sie andernfalls den Symbolpfad.
So legen Sie den Symbolpfad fest
Wählen Sie im Fenster Aufrufliste im Kontextmenü die Option Symboleinstellungen aus.
Das Dialogfeld Optionen wird geöffnet, und die seite Symbole wird angezeigt.
Klicken Sie auf Symboleinstellungen.
Klicken Sie im Dialogfeld Optionen auf das Ordnersymbol.
Im Feld Speicherorte für Symboldateien (.pdb) wird ein Cursor angezeigt.
Geben Sie einen Verzeichnispfadnamen zum Symbolspeicherort auf dem Computer ein, den Sie debuggen. Für das lokale und Remote-Debugging ist dies ein Pfad auf Ihrem lokalen Rechner.
Wählen Sie OK aus, um das Optionen Dialogfeld zu schließen.