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 pohledů:
Pohled vláken zobrazuje informace o zásobníku volání pro všechna vlákna v aplikaci. Mezi vlákny můžete přecházet a v těchto vláknech se můžete pohybovat mezi jednotlivými zásobníkovými rámci.
Zobrazení úkolů zobrazuje informace o zásobníku volání zaměřené na úkoly.
- Ve spravovaném kódu zobrazení Úlohy zobrazuje zásobníky volání System.Threading.Tasks.Task objektů.
- V nativním kódu zobrazení Úlohy zobrazuje zásobníky volání skupin úloh , paralelní algoritmy, asynchronní agentya zjednodušené úlohy.
zobrazení metody otočí zásobník volání na vybranou metodu.
Použijte okno Paralelní zásobníky
Pokud chcete otevřít okno Paralelní zásobníky, musíte být v relaci ladění. Vyberte >ladění>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ů:
Ikona | Řízení | Popis |
---|---|---|
![]() |
vlákna/Úkoly kombinované pole | Přepne zobrazení mezi zásobníky volání vláken a zásobníky volání úloh. Další informace naleznete v tématu Zobrazení úloh a Zobrazení vláken. |
![]() |
Zobrazit pouze označené | Zobrazuje zásobníky volání pouze pro vlákna, která jsou označena v jiných oknech ladicího programu, jako je například okno GPU vlákna a okno Paralelní sledování. |
![]() |
Přepnout zobrazení metody | Přepíná mezi zobrazeními zásobníku volání a Zobrazení metody. Další informace naleznete v tématu Zobrazení metody. |
![]() |
Automatické rolování na aktuální rámec zásobníku | Automaticky posouvá graf, aby byl aktuální rámec zásobníku v zobrazení. Tato funkce je užitečná, když změníte aktuální zásobníkový rámec z jiných oken, nebo když ve velkých grafech spustíte novou zarážku. |
![]() |
Přepnout ovládání přiblížení | Zobrazí nebo skryje ovládací prvek lupy vlevo od okna. Bez ohledu na viditelnost ovládacího prvku lupy můžete přibližovat nebo oddalovat stisknutím Ctrl a otáčením kolečka myši, nebo přiblížit pomocí Ctrl+Shift++ a oddálit s Ctrl+Shift+-. |
Ikona | Řízení | Popis |
---|---|---|
![]() |
vlákna/Úkoly kombinované pole | Přepne zobrazení mezi zásobníky volání vláken a zásobníky volání úloh. Další informace naleznete v tématu Zobrazení úloh a Zobrazení vláken. |
![]() |
Filtr Ovládání | Zobrazuje zásobníky volání pouze pro konkrétní sadu vláken, která vás zajímají. |
![]() |
Zobrazit pouze označené | Zobrazuje zásobníky volání pouze pro vlákna, která jsou označena v jiných oknech ladicího programu, jako je například okno GPU vlákna a okno Paralelní sledování. |
![]() |
Přepnout zobrazení metody | Přepíná mezi zobrazeními zásobníku volání a Zobrazení metody. Další informace naleznete v tématu Zobrazení metody. |
![]() |
Automatické rolování na aktuální rámec zásobníku | Automaticky posouvá graf, aby byl aktuální rámec zásobníku v zobrazení. Tato funkce je užitečná, když změníte aktuální zásobníkový rámec z jiných oken, nebo když ve velkých grafech spustíte novou zarážku. |
![]() |
Přepnout ovládání přiblížení | Zobrazí nebo skryje ovládací prvek lupy vlevo od okna. Bez ohledu na viditelnost ovládacího prvku lupy můžete přibližovat nebo oddalovat stisknutím Ctrl a otáčením kolečka myši, nebo přiblížit pomocí Ctrl+Shift++ a oddálit s Ctrl+Shift+-. |
![]() |
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. |
![]() |
Ovládání uložení | Umožňuje uložit nebo exportovat obsah z okna paralelního zásobníku ve formátu obrázku. |
![]() |
Zobrazit externí kontrolu kódu | Pomocí této funkce můžete zobrazit nebo skrýt zásobníky z externího kódu nebo knihoven. |
![]() |
Shrnout zásobníky volání | Počínaje verzí 17.13 Preview 4 sady Visual Studio 2022 můžete zvolit Summarize, když máte Copilot nainstalován a aktivován. Toto tlačítko otevře okno chatu Copilot předem načtené s relevantním kontextem vlákna, které vám umožní prozkoumat podrobnosti, včetně stavů vláken, volání funkcí a navrhovaných oprav. |
Ikony zásobníkového rámce
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 |
---|---|
![]() |
Určuje aktuální umístění (aktivní rámec zásobníku) aktuálního vlákna. |
Ikona vlákna ![]() |
Označuje aktuální umístění (aktivní rámec zásobníku) neaktuálního vlákna. |
![]() |
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 |
---|---|
![]() |
Určuje aktuální umístění (aktivní rámec zásobníku) aktuálního vlákna. |
Ikona vlákna ![]() |
Označuje aktuální umístění (aktivní rámec zásobníku) neaktuálního vlákna. |
![]() |
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í. |
![]() |
Označuje, že aktuální rámec zásobníkového rámce má kritické stavové upozornění, jako je například zablokování. |
![]() |
Označuje uzel zablokovaný. |
informace o stavu ![]() |
Označuje, že aktuální rámec zásobníku obsahuje dodatečné informace, jako je „čeká na“, „čeká na uzamčení“, „vlastněno“, atd. |
![]() |
Označuje, že aktuální úkol je ve stavu blokování, čekání, apod. |
stav ![]() |
Označuje aktuálně spuštěnou úlohu. |
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ákna nebo Úkoly. Posledních šest položek je stejné jako v okně zásobníku volání .
Položka v menu | Popis |
---|---|
vlajka | Označí vybranou položku příznakem. |
Zrušit označení | Zruší označení vybrané položky. |
ukotvit | Zablokuje vybranou položku. |
Rozmrazit | Rozmrazuje vybranou položku. |
přepnout na rámeček | 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 se jeden z rámců zásobníku nachází v aktuálním vlákně, tento rámec je 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 demontáž | Přejde na odpovídající polohu v okně Disassembly. |
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í symbolů | Otevře dialogové okno Informace o načtení symbolu. |
nastavení symbolů | Otevře dialogové okno nastavení symbolů . |
Položka v menu | Popis |
---|---|
kopírovat | Zkopírujte vybranou položku. |
Vybrat všechny snímky pod | Vybere všechny rámce ve vybraném stohu. |
vlajka | Označí vybranou položku příznakem. |
Zrušit označení | Zruší označení vybrané položky. |
ukotvit | Zablokuje vybranou položku. |
Rozmrazit | Rozmrazuje vybranou položku. |
přepnout na rámeček | 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 se jeden z rámců zásobníku nachází v aktuálním vlákně, tento rámec je 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 demontáž | Přejde na odpovídající polohu v okně Disassembly. |
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í symbolů | Otevře dialogové okno Informace o načtení symbolu. |
nastavení symbolů | Otevře dialogové okno nastavení symbolů . |
Zobrazení vláken
V zobrazení vláken jsou zásobníkový rám 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, dvakrát klikněte 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 do okna nevešel, 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. Dvě vlákna pokračují v Thread.Sleep, dvě pokračují v Console.WriteLine a aktuální vlákno pokračuje v SyncTextWriter.WriteLine.
Následující tabulka popisuje hlavní vlastnosti zobrazení Vláken:
Odkaz | Název elementu | Popis |
---|---|---|
1 | Segment zásobníku volání nebo uzel | Obsahuje řadu metod pro jedno nebo více vláken. Pokud rám neobsahuje žádné šipky, zobrazí se v něm celá cesta volání pro vlákno/vlákna. |
2 | Modré zvýraznění | Označuje cestu volání aktuálního vlákna. |
3 | Šipkové čáry | Připojte uzly a vytvořte tak 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 zásobníkových rámců v rámci stejné metody. |
6 | Popis metody | Zobrazí se, když najedete myší na metodu. V zobrazení Vlákna se v nástrojovém tipu zobrazují všechna vlákna v tabulce podobně jako v okně Vlákna. |
Následující obrázek znázorňuje hlavní vlákno v přechodu spravovaného kódu do nativního kódu. V aktuální metodě je pět vláken. Čtyři vlákna se nadále spouštějí v kontextu metody S.C, zatímco jedno pracovní vlákno pokračuje v přechodu spravovaného do nativního kódu a nastaví název v pracovním vlákně.
Následující tabulka popisuje hlavní vlastnosti zobrazení Vláken:
Odkaz | Název elementu | Popis |
---|---|---|
1 | Segment zásobníku volání nebo uzel | Obsahuje řadu metod pro jedno nebo více vláken. Pokud rám neobsahuje žádné šipky, zobrazí se v něm celá cesta volání pro vlákno/vlákna. |
2 | Modré zvýraznění | Označuje cestu volání aktuálního vlákna. |
3 | Šipkové čáry | Připojte uzly a vytvořte tak 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 zásobníkových rámců v rámci stejné metody. |
6 | Popis metody | Zobrazí se, když najedete myší na metodu. V zobrazení Vlákna se v nástrojovém tipu zobrazují všechna vlákna v tabulce podobně jako v okně Vlákna. |
7 | Popis vlákna | Popis vlákna vygenerovaný AI Počínaje sadou Visual Studio 2022 verze 17.13 Preview 1 je tento popis k dispozici při instalaci a aktivaci Copilot. |
Zobrazení úkolů
Pokud vaše aplikace používá System.Threading.Tasks.Task objekty (spravovaný kód) nebo task_handle
objekty (nativní kód) k vyjádření paralelismu, můžete použít zobrazení Úkolů.
zobrazení Úkolů zobrazuje zásobníky volání úloh místo vláken.
Ve zobrazení Úkoly :
- Zásobníky volání vláken, které právě nevykonávají ú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 na Vlákna zobrazení kliknutím pravým tlačítkem myši do rámečku zásobníku a výběrem Přejít na vlákno.
Následující obrázek znázorňuje zobrazení vláken nahoře a odpovídající zobrazení Úkoly dole.
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é oknu Úkoly .
Následující obrázek zobrazuje tooltip pro metodu v zobrazení Vlákna nahoře a ve zobrazení Úkoly dole.
Zobrazení metody
V zobrazení Vlákna nebo zobrazení Úkolů můžete přepnout graf na aktuální metodu tak, že na panelu nástrojů vyberete ikonu Přepnout zobrazení metody. Zobrazení metod ukazuje přehledně všechny metody ve všech vláknech, které volají aktuální metodu nebo jsou jí volány. Následující obrázek ukazuje, jak stejné informace vypadají v Vlákna zobrazení vlevo a v Zobrazení metody vpravo.
Pokud přepnete na nový zásobníkový rámec, nastavíte tuto metodu jako aktuální metodu a Zobrazení metody zobrazí všechny volající a volané nové metody. 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 na panelu nástrojů ikonu Zobrazení metody.
Videonávod na 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.