Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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í.
- 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í pozici (aktivní rámec zásobníku) neaktivní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í. |
|
|
(.NET) Označuje, že aktuální rámec zásobníku má upozornění na kritický stav, například zablokování. |
|
|
(.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. |
|
|
(.NET) Označuje, že aktuální úkol je v blokované nebo čekající stavu atd. |
| 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 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ě.
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 vygenerovat
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.
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.
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. 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.