Anzeigen von Threads und Tasks im Fenster „Parallele Stapel“ (C#, Visual Basic, C++)

Das Fenster Parallele Stapel ist beim Debuggen von Multithreadanwendungen hilfreich. Das Fenster enthält mehrere Ansichten:

Verwenden des Fensters „Parallele Stapel“

Sie müssen sich in einer Debugsitzung befinden, um das Fenster Parallele Stapel zu öffnen. Klicken Sie auf Debuggen>Fenster>Parallele Stapel.

Symbolleisten-Steuerelemente

Das Fenster Parallele Stapel enthält die folgenden Symbolleisten-Steuerelemente:

Screenshot of Toolbar in Parallel Stacks window.

Symbol Steuerelement Beschreibung
Threads/Tasks combo box Kombinationsfeld Threads/Aufgaben Schaltet die Ansicht zwischen Aufruflisten von Threads und Aufruflisten von Aufgaben um. Weitere Informationen finden Sie unter Aufgabenansicht und Threadansicht.
Show Only Flagged icon Nur gekennzeichnete Elemente anzeigen Mit dieser Option werden nur Aufruflisten für die Threads angezeigt, die in anderen Debuggerfenstern wie den Fenstern GPU-Threads und Parallele Überwachung gekennzeichnet wurden.
Toggle Method View icon Methodenansicht umschalten Mit dieser Option können Sie zwischen der Aufruflistenansicht und der Methodenansicht wechseln. Weitere Informationen finden Sie unter Methodenansicht.
Auto Scroll to Current icon Automatischen Bildlauf zu aktuellem Stapelrahmen durchführen Mit dieser Option können Sie im Graph automatisch zum aktuellen Stapelrahmen scrollen. Dieses Feature ist nützlich, wenn Sie den aktuellen Stapelrahmen über andere Fenster ändern oder wenn Sie einen neuen Haltepunkt in großen Graphen erreichen.
Toggle Zoom icon Zoomsteuerung ein- bzw. ausschalten Mit dieser Option wird das Zoomsteuerelement auf der linken Seite des Fensters ein- und ausgeblendet.

Unabhängig davon, ob das Zoomsteuerelement angezeigt wird, können Sie auch herein- und herauszoomen, indem Sie STRG drücken und das Mausrad drehen oder indem Sie STRG+UMSCHALT++ zum Hereinzoomen und STRG+UMSCHALT+- zum Herauszoomen drücken.

Screenshot of Toolbar in Parallel Stacks window 2022.

Symbol Steuerelement Beschreibung
Threads/Tasks combo box Kombinationsfeld Threads/Aufgaben Schaltet die Ansicht zwischen Aufruflisten von Threads und Aufruflisten von Aufgaben um. Weitere Informationen finden Sie unter Aufgabenansicht und Threadansicht.
Filter icon Filtersteuerelement Zeigt Aufruflisten nur für die spezifische Gruppe von Threads an, die Sie interessieren.
Show Only Flagged icon Nur gekennzeichnete Elemente anzeigen Mit dieser Option werden nur Aufruflisten für die Threads angezeigt, die in anderen Debuggerfenstern wie den Fenstern GPU-Threads und Parallele Überwachung gekennzeichnet wurden.
Toggle Method View icon Methodenansicht umschalten Mit dieser Option können Sie zwischen der Aufruflistenansicht und der Methodenansicht wechseln. Weitere Informationen finden Sie unter Methodenansicht.
Auto Scroll to Current icon Automatischen Bildlauf zu aktuellem Stapelrahmen durchführen Mit dieser Option können Sie im Graph automatisch zum aktuellen Stapelrahmen scrollen. Dieses Feature ist nützlich, wenn Sie den aktuellen Stapelrahmen über andere Fenster ändern oder wenn Sie einen neuen Haltepunkt in großen Graphen erreichen.
Toggle Zoom icon Zoomsteuerung ein- bzw. ausschalten Mit dieser Option wird das Zoomsteuerelement auf der linken Seite des Fensters ein- und ausgeblendet.

Unabhängig davon, ob das Zoomsteuerelement angezeigt wird, können Sie auch herein- und herauszoomen, indem Sie STRG drücken und das Mausrad drehen oder indem Sie STRG+UMSCHALT++ zum Hereinzoomen und STRG+UMSCHALT+- zum Herauszoomen drücken.
Search icon Suchsteuerelement Mit dieser Funktion können Sie einfach Stapelrahmen durchsuchen und dann Pfeile verwenden, um zwischen diesen Ergebnissen zu navigieren.
Save icon Steuerelement „Speichern“ Ermöglicht das Speichern/Exportieren des Inhalts aus dem Fenster mit parallelen Stapeln als Bild.
External Code icon Steuerelement „Externen Code anzeigen“ Mit diesem Feature können Sie die Stapel im externen Code/in den externen Bibliotheken ein- und ausblenden.

Stapelrahmensymbole

Die folgenden Symbole geben Informationen zu den aktiven und aktuellen Stapelrahmen in allen Ansichten an:

Symbol Beschreibung
Yellow arrow Dieses Symbol gibt die aktuelle Position (aktiver Stapelrahmen) des aktuellen Threads an.
Threads icon Dieses Symbol gibt die aktuelle Position (aktiver Stapelrahmen) von nicht aktuellen Threads an.
Green arrow Dieses Symbol gibt den aktuellen Stapelrahmen an (aktueller Debuggerkontext). Der Methodenname wird immer fett formatiert.
Symbol Beschreibung
Yellow arrow Dieses Symbol gibt die aktuelle Position (aktiver Stapelrahmen) des aktuellen Threads an.
Threads icon Dieses Symbol gibt die aktuelle Position (aktiver Stapelrahmen) von nicht aktuellen Threads an.
Green arrow Dieses Symbol gibt den aktuellen Stapelrahmen an (aktueller Debuggerkontext). Der Methodenname wird immer fett formatiert.
Status Error Gibt an, dass der aktuelle Stapelrahmen eine Warnung zu einem kritischen Status wie aufweist, etwa einem Deadlock.
Status Excluded Gibt den Knoten mit Deadlock an.
Status Information Gibt an, dass der aktuelle Stapelrahmen zusätzliche Informationen enthält, z. B. „Warten auf“, „Warten auf Sperre“, „Im Besitz von“ usw.
Status Blocked Gibt an, dass sich die aktuelle Aufgabe im Status „Blockiert“/„Warten“ usw. befindet.
Status Running Gibt an, dass derzeit ein Task ausgeführt wird.

Kontextmenüelemente

Die folgenden Kontextmenüelemente sind verfügbar, wenn Sie mit der rechten Maustaste auf eine Methode in den Ansichten Threads oder Aufgaben klicken. Die letzten sechs Elemente sind mit denen im Aufruflistenfenster identisch.

Screenshot of Shortcut menu in Parallel Stacks window.

Menüoption Beschreibung
Kennzeichnen Kennzeichnet das ausgewählte Element.
Kennzeichnung aufheben Hebt die Kennzeichnung des ausgewählten Elements auf.
Einfrieren Friert das ausgewählte Element ein.
Reaktivieren Reaktiviert das ausgewählte Element.
Zu Rahmen wechseln Dieses Element ist identisch mit dem entsprechenden Menübefehl im Fenster Aufrufliste. Im Fenster Parallele Stapel kann sich eine Methode jedoch in mehreren Rahmen befinden. Sie können den Rahmen auswählen, der im untergeordneten Menü des Elements enthalten sein soll. Wenn sich einer der Stapelrahmen im aktuellen Thread befindet, wird dieser Rahmen standardmäßig im untergeordneten Menü ausgewählt.
Zur Aufgabe wechseln oder Gehe zu Thread Mit diesem Menüelement wechseln Sie zwischen den Ansichten Aufgabe und Threads. Dabei wird derselbe Stapelrahmen hervorgehoben.
Gehe zu Quellcode Mit diesem Menüelement navigieren Sie zur entsprechenden Position im Quellcodefenster.
Zu Disassemblierung wechseln Mit diesem Menüelement navigieren Sie zur entsprechenden Position im Fenster Disassemblierung.
Externen Code anzeigen Blendet externen Code ein bzw. aus.
Hexadezimale Anzeige Schaltet zwischen dezimaler und hexadezimaler Anzeige um.
Threads in Quelle anzeigen Mit diesem Menüelement wird die Position des Threads im Quellcodefenster hervorgehoben.
Symbolladeinformationen Mit diesem Menüelement wird das Dialogfeld Symbolladeinformationen geöffnet.
Symboleinstellungen Mit diesem Menüelement wird das Dialogfeld Symboleinstellungen geöffnet.

Screenshot of Shortcut menu in Parallel Stacks window 2022.

Menüoption BESCHREIBUNG
Copy Kopiert das ausgewählte Element.
Alle Rahmen auswählen unter Wählt alle Rahmen unter dem ausgewählten Stapel aus.
Kennzeichnen Kennzeichnet das ausgewählte Element.
Kennzeichnung aufheben Hebt die Kennzeichnung des ausgewählten Elements auf.
Einfrieren Friert das ausgewählte Element ein.
Reaktivieren Reaktiviert das ausgewählte Element.
Zu Rahmen wechseln Dieses Element ist identisch mit dem entsprechenden Menübefehl im Fenster Aufrufliste. Im Fenster Parallele Stapel kann sich eine Methode jedoch in mehreren Rahmen befinden. Sie können den Rahmen auswählen, der im untergeordneten Menü des Elements enthalten sein soll. Wenn sich einer der Stapelrahmen im aktuellen Thread befindet, wird dieser Rahmen standardmäßig im untergeordneten Menü ausgewählt.
Zur Aufgabe wechseln oder Gehe zu Thread Mit diesem Menüelement wechseln Sie zwischen den Ansichten Aufgabe und Threads. Dabei wird derselbe Stapelrahmen hervorgehoben.
Gehe zu Quellcode Mit diesem Menüelement navigieren Sie zur entsprechenden Position im Quellcodefenster.
Zu Disassemblierung wechseln Mit diesem Menüelement navigieren Sie zur entsprechenden Position im Fenster Disassemblierung.
Externen Code anzeigen Blendet externen Code ein bzw. aus.
Hexadezimale Anzeige Schaltet zwischen dezimaler und hexadezimaler Anzeige um.
Threads in Quelle anzeigen Mit diesem Menüelement wird die Position des Threads im Quellcodefenster hervorgehoben.
Symbolladeinformationen Mit diesem Menüelement wird das Dialogfeld Symbolladeinformationen geöffnet.
Symboleinstellungen Mit diesem Menüelement wird das Dialogfeld Symboleinstellungen geöffnet.

Threadansicht

In der Ansicht Threads werden der Stapelrahmen und der Aufrufpfad des aktuellen Threads blau hervorgehoben. Die aktuelle Position des Threads wird vom gelben Pfeil angezeigt.

Doppelklicken Sie auf eine andere Methode, um den aktuellen Stapelrahmen zu ändern. Dies kann auch zu einem Wechsel des aktuellen Threads führen, je nachdem, ob die ausgewählte Methode Teil des aktuellen oder eines anderen Threads ist.

Wenn der Graph der Ansicht Threads zu groß ist, um in das Fenster zu passen, wird im Fenster das Steuerelement Vogelperspektive angezeigt. Sie können den Rahmen im Steuerelement bewegen, um zu verschiedenen Abschnitten des Graphen zu navigieren.

In der folgenden Abbildung wird ein Thread gezeigt, der von der Main-Methode zu einem Übergang von verwaltetem zu nativem Code wechselt. In der aktuellen Methode befinden sich sechs Threads. Ein Thread wird mit „Thread.Sleep“ fortgesetzt, während ein anderer mit „Console.WriteLine“ und dann mit „SyncTextWriter.WriteLine“ fortfährt.

Screenshot of Threads view in Parallel Stacks window.

In der folgenden Tabelle werden die Hauptfeatures der Ansicht Threads beschrieben:

Legende Elementname BESCHREIBUNG
1 Aufruflistensegment oder -knoten Dieses Element enthält eine Reihe von Methoden für einen oder mehrere Threads. Wenn keine Pfeillinien mit dem Rahmen verbunden sind, zeigt der Rahmen den gesamten Aufrufpfad für die Threads an.
2 Blaue Hervorhebung Gibt den Aufrufpfad des aktuellen Threads an.
3 Pfeillinien Diese verbinden Knoten, um den gesamten Aufrufpfad für den Thread bzw. die Threads darzustellen.
4 Knotenheader Dieses Element zeigt die Anzahl der Prozesse und Threads für den Knoten an.
5 Methode Stellt einen oder mehrere Stapelrahmen in derselben Methode dar.
6 QuickInfo zur Methode Dieses Element wird angezeigt, wenn Sie auf eine Methode zeigen. In der Threadansicht zeigt die QuickInfo alle Threads in einer Tabelle ähnlich wie im Fenster Threads an.

In der folgenden Abbildung wird ein Thread gezeigt, der von der Main-Methode zu einem Übergang von verwaltetem zu nativem Code wechselt. In der aktuellen Methode befinden sich fünf Threads. Einer wechselt zu „ServerClass.InstanceMethod“, ein anderer zu „Worker.Thread.Start“ und dann zu „StartupHook.Initialize.AnonymousMethod“.

Screenshot of Threads view in Parallel Stacks window 2022.

In der folgenden Tabelle werden die Hauptfeatures der Ansicht Threads beschrieben:

Legende Elementname BESCHREIBUNG
1 Aufruflistensegment oder -knoten Dieses Element enthält eine Reihe von Methoden für einen oder mehrere Threads. Wenn keine Pfeillinien mit dem Rahmen verbunden sind, zeigt der Rahmen den gesamten Aufrufpfad für die Threads an.
2 Blaue Hervorhebung Gibt den Aufrufpfad des aktuellen Threads an.
3 Pfeillinien Diese verbinden Knoten, um den gesamten Aufrufpfad für den Thread bzw. die Threads darzustellen.
4 Knotenheader Zeigt die Anzahl der Prozesse/Threads, den Threadnamen und die Thread-ID für den Knoten an.
5 Methode Stellt einen oder mehrere Stapelrahmen in derselben Methode dar.
6 QuickInfo zur Methode Dieses Element wird angezeigt, wenn Sie auf eine Methode zeigen. In der Threadansicht zeigt die QuickInfo alle Threads in einer Tabelle ähnlich wie im Fenster Threads an.

Aufgabenansicht

Wenn Ihre App System.Threading.Tasks.Task-Objekte (verwalteter Code) oder task_handle-Objekte (nativer Code) verwendet, um Parallelität auszudrücken, können Sie die Ansicht Aufgaben verwenden. In der Aufgabenansicht werden Aufruflisten von Aufgaben anstelle von Threads angezeigt.

In der Ansicht Aufgaben:

  • werden Aufruflisten von Threads nicht angezeigt, die keine Aufgaben ausführen.
  • werden Aufruflisten von Threads, die Aufgaben ausführen, oben und unten abgeschnitten, um die relevantesten Rahmen für Aufgaben anzuzeigen.
  • werden die Aufruflisten dieser Aufgaben in separaten Knoten angezeigt, wenn sich mehrere Aufgaben in einem Thread befinden.

Wechseln Sie zurück zur Ansicht Threads, indem Sie mit der rechten Maustaste in einen Stapelrahmen klicken und Gehe zu Thread auswählen, um die gesamte Aufrufliste anzuzeigen.

In der folgenden Abbildung wird die Ansicht Threads oben und die dazugehörige Ansicht Aufgaben unten veranschaulicht.

Screenshot of Threads and Tasks views.

Screenshot of Tasks view in Parallel Stacks window.

Zeigen Sie auf eine Methode, um eine QuickInfo mit zusätzlichen Informationen anzuzeigen. In der Ansicht Aufgaben zeigt die QuickInfo ähnlich wie im Fenster Aufgaben alle Aufgaben in einer Tabelle.

In der folgenden Abbildung werden die QuickInfo für eine Methode in der Ansicht Threads oben und die dazugehörige Ansicht Aufgaben unten angezeigt.

Screenshot of Threads and Tasks tooltips.

Screenshot of Threads and Tasks tooltips.

Methodenansicht

Über die Ansichten Threads und Aufgaben können Sie den Graphen zur aktuellen Methode pivotieren, indem Sie in der Symbolleiste auf das Symbol Methodenansicht umschalten klicken. In der Methodenansicht werden alle Methoden für sämtliche Threads in einem Blick angezeigt, die entweder Aufrufer oder Aufgerufene der aktuellen Methode sind. In der folgenden Abbildung wird veranschaulicht, wie die gleichen Informationen in der Ansicht Threads links und der Methodenansicht rechts dargestellt werden.

Screenshot of Methods view in Parallel Stacks window.

Screenshot of Methods view in Parallel Stacks window 2022.

Wenn Sie zu einem neuen Stapelrahmen wechseln, legen Sie diese Methode als aktuelle Methode fest und die Methodenansicht zeigt alle Aufrufer und Aufgerufenen für die neue Methode an. Dabei werden möglicherweise einige Threads in der Ansicht eingeblendet oder ausgeblendet, je nachdem, ob die betreffende Methode in ihren Aufruflisten enthalten ist. Klicken Sie wieder auf das Symbol Methodenansicht in der Symbolleiste, um zur Aufruflistenansicht zurückzukehren.

Videotutorial zum Debuggen von Threads und Aufgaben mit parallelen Stapeln

Diese Videotutorials veranschaulichen, wie Sie die Ansichten „Threads“ und „Aufgaben“ des Fensters „Parallele Stapel“ in Visual Studio 2022 verwenden können, um Ihre Multithreadanwendungen zu debuggen.