Zobrazení vláken a úloh v okně Paralelní zásobníky (C#, Visual Basic, C++)

Okno Paralelní zásobníky je užitečné pro ladění vícevláknových aplikací. Má několik zobrazení:

Použití okna Paralelní zásobníky

Pokud chcete otevřít okno Paralelní zásobníky , musíte být v relaci ladění. Vyberte Ladit>paralelní zásobníky Windows.>

Ovládací prvky panelu nástrojů

Okno Paralelní zásobníky obsahuje následující ovládací prvky panelu nástrojů:

Screenshot of Toolbar in Parallel Stacks window.

Ikona Control Popis
Threads/Tasks combo box Pole se seznamem Úkoly vláken/ Přepne zobrazení mezi zásobníky volání vláken a zásobníky volání úloh. Další informace naleznete v části Zobrazení úkolů a Zobrazení Vláken.
Show Only Flagged icon Zobrazit pouze příznak Zobrazuje zásobníky volání pouze pro vlákna označená v jiných oknech ladicího programu, jako je okno Vlákna GPU a okno Paralelní kukátko .
Toggle Method View icon Přepnout zobrazení metody Přepíná mezi zobrazeními zásobníku volání a zobrazením metody. Další informace naleznete v tématu Zobrazení metody.
Auto Scroll to Current icon Automatické posouvání na aktuální rámec zásobníku Automaticky zapisuje graf tak, aby aktuální rámec zásobníku byl v zobrazení. Tato funkce je užitečná, když změníte aktuální rámec zásobníku z jiných oken nebo když ve velkých grafech dosáhnete nové zarážky.
Toggle Zoom icon Přepnout ovládací prvek lupy Zobrazí nebo skryje ovládací prvek lupy vlevo od okna.

Bez ohledu na viditelnost ovládacího prvku lupy můžete také přiblížit stisknutím kláves Ctrl a otáčením kolečka myši nebo stisknutím kombinace kláves Ctrl+Shift++ a oddálením kombinace kláves Ctrl+Shift.+-

Screenshot of Toolbar in Parallel Stacks window 2022.

Ikona Control Popis
Threads/Tasks combo box Pole se seznamem Úkoly vláken/ Přepne zobrazení mezi zásobníky volání vláken a zásobníky volání úloh. Další informace naleznete v části Zobrazení úkolů a Zobrazení Vláken.
Filter icon Ovládací prvek filtru Zobrazuje zásobníky volání pouze pro konkrétní sadu vláken, která vás zajímají.
Show Only Flagged icon Zobrazit pouze příznak Zobrazuje zásobníky volání pouze pro vlákna označená v jiných oknech ladicího programu, jako je okno Vlákna GPU a okno Paralelní kukátko .
Toggle Method View icon Přepnout zobrazení metody Přepíná mezi zobrazeními zásobníku volání a zobrazením metody. Další informace naleznete v tématu Zobrazení metody.
Auto Scroll to Current icon Automatické posouvání na aktuální rámec zásobníku Automaticky zapisuje graf tak, aby aktuální rámec zásobníku byl v zobrazení. Tato funkce je užitečná, když změníte aktuální rámec zásobníku z jiných oken nebo když ve velkých grafech dosáhnete nové zarážky.
Toggle Zoom icon Přepnout ovládací prvek lupy Zobrazí nebo skryje ovládací prvek lupy vlevo od okna.

Bez ohledu na viditelnost ovládacího prvku lupy můžete také přiblížit stisknutím kláves Ctrl a otáčením kolečka myši nebo stisknutím kombinace kláves Ctrl+Shift++ a oddálením kombinace kláves Ctrl+Shift.+-
Search icon Ovládací prvek hledání Pomocí této funkce můžete snadno prohledávat snímky zásobníku a pak pomocí šipek přecházet mezi těmito výsledky.
Save icon Uložit ovládací prvek Umožňuje uložit nebo exportovat obsah z okna paralelního zásobníku jako obrázek.
External Code icon Zobrazit externí ovládací prvek kódu Pomocí této funkce můžete zobrazit nebo skrýt zásobníky z externího kódu nebo knihoven.

Ikony s rámečkem zásobníku

Následující ikony poskytují informace o aktivních a aktuálních rámcích zásobníku ve všech zobrazeních:

Ikona Popis
Yellow arrow Určuje aktuální umístění (aktivní rámec zásobníku) aktuálního vlákna.
Threads icon Označuje aktuální umístění (aktivní rámec zásobníku) ne aktuálního vlákna.
Green arrow Označuje aktuální rámec zásobníku (kontext aktuálního ladicího programu). Název metody je tučný, kdekoli se zobrazí.
Ikona Popis
Yellow arrow Určuje aktuální umístění (aktivní rámec zásobníku) aktuálního vlákna.
Threads icon Označuje aktuální umístění (aktivní rámec zásobníku) ne aktuálního vlákna.
Green arrow Označuje aktuální rámec zásobníku (kontext aktuálního ladicího programu). Název metody je tučný, kdekoli se zobrazí.
Status Error Označuje, že aktuální rámec zásobníku má upozornění na kritický stav, například zablokování.
Status Excluded Označuje uzel zablokovaný.
Status Information Označuje, že aktuální rámec zásobníku obsahuje další informace, jako je čekání na, čekání na uzamčení, vlastnictví atd.
Status Blocked Označuje, že aktuální úkol je v blokované nebo čekající stavu atd.
Status Running Označuje, že aktuálně spuštěná úloha.

Položky místní nabídky

Následující položky místní nabídky jsou k dispozici, když kliknete pravým tlačítkem myši na metodu v zobrazení vláken nebo v zobrazení Úlohy . Posledních šest položek je stejné jako v okně Zásobník volání.

Screenshot of Shortcut menu in Parallel Stacks window.

Položka nabídky Popis
Parametr Označí vybranou položku příznakem.
Zrušit označení Zruší označení vybrané položky.
Zmrazit Zablokuje vybranou položku.
Tání Roztáčí vybranou položku.
Přepnout na rámec Stejné jako odpovídající příkaz nabídky v okně Zásobník volání. V okně Paralelní zásobníky však může být jedna metoda v několika rámcích. V podnabídce této položky můžete vybrat požadovaný rámec. Pokud je jeden z rámců zásobníku v aktuálním vlákně, je tento rámec ve výchozím nastavení vybrán v podnabídce.
Přejít na úlohu nebo přejít na vlákno Přepne do zobrazení Úloh nebo vláken a zachová stejný rámec zásobníku zvýrazněný.
Přejít na zdrojový kód Přejde do odpovídajícího umístění v okně zdrojového kódu.
Přejít na zpětný překlad Přejde do odpovídajícího umístění v okně Zpětné překladu .
Zobrazit externí kód Zobrazí nebo skryje externí kód.
Šestnáctkové zobrazení Přepíná mezi desetinným a šestnáctkovým displejem.
Zobrazit vlákna ve zdroji Označí umístění vlákna v okně zdrojového kódu.
Informace o načtení symbolu Otevře dialogové okno Informace o načtení symbolu.
Nastavení symbolů Otevře dialogové okno Symbol Nastavení.

Screenshot of Shortcut menu in Parallel Stacks window 2022.

Položka nabídky Popis
Kopírování Zkopírujte vybranou položku.
Vyberte všechny rámce níže. Vybere všechny rámce ve vybraném zásobníku.
Parametr Označí vybranou položku příznakem.
Zrušit označení Zruší označení vybrané položky.
Zmrazit Zablokuje vybranou položku.
Tání Roztáčí vybranou položku.
Přepnout na rámec Stejné jako odpovídající příkaz nabídky v okně Zásobník volání. V okně Paralelní zásobníky však může být jedna metoda v několika rámcích. V podnabídce této položky můžete vybrat požadovaný rámec. Pokud je jeden z rámců zásobníku v aktuálním vlákně, je tento rámec ve výchozím nastavení vybrán v podnabídce.
Přejít na úlohu nebo přejít na vlákno Přepne do zobrazení Úloh nebo vláken a zachová stejný rámec zásobníku zvýrazněný.
Přejít na zdrojový kód Přejde do odpovídajícího umístění v okně zdrojového kódu.
Přejít na zpětný překlad Přejde do odpovídajícího umístění v okně Zpětné překladu .
Zobrazit externí kód Zobrazí nebo skryje externí kód.
Šestnáctkové zobrazení Přepíná mezi desetinným a šestnáctkovým displejem.
Zobrazit vlákna ve zdroji Označí umístění vlákna v okně zdrojového kódu.
Informace o načtení symbolu Otevře dialogové okno Informace o načtení symbolu.
Nastavení symbolů Otevře dialogové okno Symbol Nastavení.

zobrazení vláken

V zobrazení Vlákna jsou rámeček zásobníku a cesta volání aktuálního vlákna zvýrazněny modře. Aktuální umístění vlákna je zobrazeno žlutou šipkou.

Pokud chcete změnit aktuální rámec zásobníku, poklikejte na jinou metodu. To může také přepnout aktuální vlákno v závislosti na tom, zda je zvolená metoda součástí aktuálního vlákna nebo jiného vlákna.

Pokud je graf zobrazení Vláken příliš velký, aby se nevešel do okna, zobrazí se v okně ovládací prvek Bird's Eye View. Rámeček v ovládacím prvku můžete přesunout a přejít do různých částí grafu.

Následující obrázek ukazuje jedno vlákno, které přechází z main na přechod spravovaného kódu do nativního kódu. V aktuální metodě je šest vláken. Jeden pokračuje do Thread.Sleep a druhý pokračuje na Console.WriteLine a pak na SyncTextWriter.WriteLine.

Screenshot of Threads view in Parallel Stacks window.

Následující tabulka popisuje hlavní funkce zobrazení Vláken :

Popisek Název prvku Popis
1 Segment zásobníku volání nebo uzel Obsahuje řadu metod pro jedno nebo více vláken. Pokud rámec neobsahuje žádné čáry šipek, zobrazí se v rámci celá cesta volání pro vlákna.
2 Modré zvýraznění Označuje cestu volání aktuálního vlákna.
3 Šipkové čáry Připojení uzly, které tvoří celou cestu volání pro vlákna.
4 Hlavička uzlu Zobrazuje počet procesů a vláken pro uzel.
5 metoda Představuje jeden nebo více rámců zásobníku ve stejné metodě.
6 Popis metody Zobrazí se, když najedete myší na metodu. V zobrazení Vlákna se v popisu zobrazí všechna vlákna v tabulce podobné okně Vlákna .

Následující obrázek ukazuje jedno vlákno, které přechází z main na přechod spravovaného kódu do nativního kódu. V aktuální metodě je pět vláken. Jeden pokračuje na ServerClass.InstanceMethod a druhý pokračuje na Worker.Thread.Start a pak na StartupHook.Initialize.AnonymousMethod.

Screenshot of Threads view in Parallel Stacks window 2022.

Následující tabulka popisuje hlavní funkce zobrazení Vláken :

Popisek Název prvku Popis
1 Segment zásobníku volání nebo uzel Obsahuje řadu metod pro jedno nebo více vláken. Pokud rámec neobsahuje žádné čáry šipek, zobrazí se v rámci celá cesta volání pro vlákna.
2 Modré zvýraznění Označuje cestu volání aktuálního vlákna.
3 Šipkové čáry Připojení uzly, které tvoří celou cestu volání pro vlákna.
4 Hlavička uzlu Zobrazuje počet procesů/vláken, název vlákna a ID vlákna pro uzel.
5 metoda Představuje jeden nebo více rámců zásobníku ve stejné metodě.
6 Popis metody Zobrazí se, když najedete myší na metodu. V zobrazení Vlákna se v popisu zobrazí všechna vlákna v tabulce podobné okně Vlákna .

Zobrazení úkolů

Pokud vaše aplikace k vyjádření paralelismu používá System.Threading.Tasks.Task objekty (spravovaný kód) nebo task_handle objekty (nativní kód), můžete použít zobrazení Úkoly . Zobrazení Úkolů zobrazuje zásobníky volání úloh místo vláken.

V zobrazení Úkoly :

  • Zásobníky volání vláken, které nejsou spuštěné úkoly, se nezobrazují.
  • Zásobníky volání vláken, které spouští úlohy, jsou vizuálně oříznuty v horní a dolní části, aby se zobrazily nejrelevantní rámce pro úlohy.
  • Pokud je na jednom vlákně několik úkolů, zobrazí se zásobníky volání těchto úloh v samostatných uzlech.

Pokud chcete zobrazit celý zásobník volání, přepněte zpět do zobrazení Vláken tak, že kliknete pravým tlačítkem na rámeček zásobníku a vyberete Přejít na vlákno.

Následující obrázek znázorňuje zobrazení Vláken v horní části a odpovídající zobrazení Úkolů v dolní části.

Screenshot of Threads and Tasks views.

Screenshot of Tasks view in Parallel Stacks window.

Najeďte myší na metodu a zobrazte popis s dalšími informacemi. V zobrazení Úkoly se v popisu zobrazují všechny úkoly v tabulce podobné okně Úkoly .

Následující obrázek ukazuje popis pro metodu v zobrazení Vlákna v horní části a pro odpovídající zobrazení Tasks v dolní části.

Screenshot of Threads and Tasks tooltips.

Screenshot of Threads and Tasks tooltips.

Zobrazení metody

V zobrazení Vláken nebo v zobrazení Úlohy můžete graf aktuální metody překlopit výběrem ikony Přepnout zobrazení metody na panelu nástrojů. Zobrazení metody ukazuje na první pohled všechny metody ve všech vláknech, které volají nebo jsou volány aktuální metodou. Následující obrázek ukazuje, jak stejné informace vypadají v zobrazení Vlákna vlevo a v zobrazení metody vpravo.

Screenshot of Methods view in Parallel Stacks window.

Screenshot of Methods view in Parallel Stacks window 2022.

Pokud přepnete na nový rámec zásobníku, nastavíte tuto metodu jako aktuální metodu a zobrazení metody zobrazí všechny volající a volané pro novou metodu. To může způsobit, že se některá vlákna zobrazí nebo zmizí ze zobrazení v závislosti na tom, jestli se tato metoda zobrazí ve svých zásobníkech volání. Pokud se chcete vrátit do zobrazení zásobníku volání, znovu vyberte ikonu panelu nástrojů Zobrazení metody.

Videokurz ladění vláken a úloh pomocí paralelních zásobníků

Tyto videokurzy ukazují, jak můžete pomocí zobrazení Vláken a úkolů okna Paralelní zásobníky v sadě Visual Studio 2022 ladit vícevláknové aplikace.