Sdílet prostřednictvím


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.
    • Pro aplikace .NET používající vzor async/await je zobrazení Úlohy nejužitečnější pro ladění. Podrobný kurz najdete v tématu Ladění asynchronní aplikace.
    • Pro aplikace používající Task Parallel Library (TPL), ale ne vzor async/await, nebo pro aplikace jazyka C++ využívající Concurrency Runtime, je zobrazení Vláken v okně Paralelní zásobníky nejužitečnějším nástrojem pro ladění.
  • Zobrazení úkolů zobrazuje informace o zásobníku volání zaměřené na úkoly.
    • Pro aplikace .NET používající vzor async/await je zobrazení Úlohy nejužitečnější pro ladění.
    • Pro aplikace používající Task Parallel Library (TPL), ale ne vzor async/await, nebo pro aplikace jazyka C++ využívající Concurrency Runtime, je zobrazení Vláken v okně Paralelní zásobníky nejužitečnějším nástrojem pro ladění.

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ů:

Snímek obrazovky s panelem nástrojů v okně Paralelní Zásobníky

Ikona Řízení Popis
Kombinované pole Vlákna/Úkoly 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 ikonu s příznakem 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 ikonu zobrazení metody 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é posouvání na aktuální ikonu 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 ikonu lupy 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+-.

Snímek obrazovky panelu nástrojů v okně Paralelní zásobníky 2022

Ikona Řízení Popis
Kombinované pole Vlákna/Úkoly 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.
ikona Filtru Filtr Ovládání Zobrazuje zásobníky volání pouze pro konkrétní sadu vláken, která vás zajímají.
Zobrazit pouze ikonu s příznakem 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 ikonu zobrazení metody 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é posouvání na aktuální ikonu 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 ikonu lupy 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 Hledat 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.
Uložení ikona Ovládání uložení Umožňuje uložit nebo exportovat obsah z okna paralelního zásobníku ve formátu obrázku.
ikona externího kódu 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.
ikona Souhrn 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
žlutá šipka 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.
zelená šipka 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
žlutá šipka 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í pozici (aktivní rámec zásobníku) neaktivního vlákna.
zelená šipka 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í.
stavová chyba (.NET) Označuje, že aktuální rámec zásobníku má upozornění na kritický stav, například zablokování.
stav vyloučený (.NET) Označuje uzel zablokovaný.
informace o stavu (.NET) 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.
stav blokované (.NET) Označuje, že aktuální úkol je v blokované nebo čekající stavu atd.
stav spuštěný 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í .

Snímek obrazovky místní nabídky v okně Paralelní zásobníky.

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ů .

snímek obrazovky místní nabídky v okně Paralelní zásobníky 2022.

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 vrstvá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 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ě.

snímek zobrazení vláken v okně Paralelní zásobníky 2022.

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.

Získání pomoci s AI

Pokud máte Copilot, můžete získat pomoc s AI v zobrazení Vláken s popisy vláken vygenerovanými AI a pomocí tlačítka Generovat přehledy . Použijte snímek obrazovky vygenerovatpřehledy s tlačítkem Vygenerovat přehledy. Tlačítko pro interakci s copilotem s daty vlákna, která vidíte. V tomto scénáři už Copilot zná kontext vaší otázky, takže nemusíte v chatu zadávat kontext sami. Další informace naleznete v tématu Ladění pomocí Copilotu.

Pokud chcete povolit nebo zakázat popisy souhrnu vláken, otevřete podokno Nástroje>Možnosti a rozbalte sekci Všechna nastavení>GitHub>Copilot>Debugger a Diagnostika. Vyberte nebo zrušte výběr políčka Povolit AI sumarizaci v okně Paralelní zásobníky.

Chcete-li povolit nebo zakázat popisy souhrnů vláken, otevřete dialogové okno Možnosti nástrojů> a rozbalte částGitHub>Copilot. V kategorii Ladicí program a Diagnostika zaškrtněte nebo zrušte zaškrtnutí políčka Povolit shrnutí AI v okně Paralelní zásobník.

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.

Snímek obrazovky zobrazení vláken v okně Paralelní zásobníky.

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.

Zobrazení úkolů

Pro aplikace .NET používající vzor async/await je zobrazení Úlohy nejužitečnější pro ladění. Podrobný kurz najdete v tématu Ladění asynchronní aplikace.

V zobrazení Úkoly můžete:

  • Zobrazte vizualizace zásobníku volání pro aplikace, které používají vzor async/await.
  • Identifikujte asynchronní kód, který je naplánovaný ke spuštění, ale ještě není spuštěný.

Následující obrázek znázorňuje zobrazení vláken nahoře a odpovídající zobrazení Úkoly dole.

snímek obrazovky se zobrazeními vláken a úkolů

snímek obrazovky zobrazení úloh v okně Paralelní zásobníky.

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.

snímek obrazovky s popisy vláken a úloh.

snímek obrazovky s popisy vláken a úkolů

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.

Snímek obrazovky zobrazení metod v okně Paralelní zásobníky.

snímek obrazovky zobrazení metod v okně Paralelní zásobníky 2022

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. Tento scénář může způsobit, že se některá vlákna objeví nebo zmizí z pohledu v závislosti na tom, zda se tato metoda vyskytuje na zásobníku 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.