Zobrazit vlákna v debuggeru Visual Studio (C#, Visual Basic, C++)
Okno Vlákna v ladicím programu Visual Studio vám umožňuje zkoumat a pracovat s vlákny v aplikaci, kterou ladíte. Okno poskytuje funkce pro seskupení, řazení, označení příznakem, ukotvení, rozmrazování a vyhledávání vláken v kódu a zobrazení zásobníků volání.
Okno vláken je k dispozici pouze v době, kdy je spuštěný ladicí program sady Visual Studio. Během ladicí relace můžete otevřít okno výběrem Ladění>Okna>Vlákna.
Tento článek popisuje, jak pracovat s oknem Vlákna pro programy jazyka C#, Visual Basic nebo C++. Pokud hledáte podrobné pokyny k použití okna vláken, přečtěte si téma Návod: Ladění pomocí okna Vlákna.
Prozkoumejte tabulku okna vláken
V okně Vlákna se zobrazí tabulka, ve které každý řádek odpovídá samostatnému vláknu ve vaší aplikaci. Ve výchozím zobrazení se v tabulce zobrazují všechna vlákna ve vaší aplikaci. Nastavení tabulky můžete nakonfigurovat tak, aby zobrazovala pouze vlákna, která vás zajímají. Tabulka obsahuje více sloupců, které podrobně popisují vlákna. Umístění sloupce můžete upravit a skrýt nepotřebné sloupce.
Následující tabulka popisuje všechny dostupné sloupce v okně Vlákna a označuje, zda je sloupec viditelný nebo skrytý ve výchozím zobrazení. Sloupce jsou uvedeny podle výchozí pozice tabulky zleva doprava.
Sloupec | Výchozí | Popis |
---|---|---|
vlajka | Viditelné, neoznačené | Červené příznaky v tomto sloupci označují vlákna označená pro zvláštní pozornost. Klikněte na příznak (barva ikony se změní na červenou) pro označení nebo zrušení označení vlákna (ikona se přepne na obrys příznaku). Ikona barevného příznaku pomáhá odlišit označené vlákno od jiných vláken v tabulce. Pro více informací se podívejte na Označení a odstranění příznaku u vláken. |
aktuální vlákno | Viditelné, neoznačené | Žlutá ikona šipky v tomto sloupci označuje aktuální vlákno v aplikaci spuštěné v ladicím programu. Ikona obrysu šipky v tomto sloupci označuje aktuální kontext ladicího programu pro neaktuální vlákno. |
id | Viditelný | Poskytuje identifikační číslo pro každé vlákno. |
spravované ID | Viditelný | Zobrazí spravovaná identifikační čísla pro spravovaná vlákna. |
Kategorie | Viditelný | Označuje kategorii vláken jako vlákna uživatelského rozhraní, obslužné rutiny volání vzdálené procedury nebo pracovní vlákna. Zvláštní kategorie identifikuje hlavní vlákno aplikace. |
název | Viditelný | Identifikuje každé vlákno podle názvu nebo <Bez názvu>, pokud vlákno nemá žádný zadaný název. Pokud vlákno již neexistuje, má vlákno popisek [Vlákno zničeno]. |
umístění | Viditelný | Ukazuje, kde je vlákno spuštěno v rámci zásobníku volání aplikace. Chcete-li zobrazit úplný zásobník volání pro vlákno, vyberte šipku rozevíracího seznamu. Pokud vlákno již neexistuje, umístění je označeno jako <a není dostupné>. |
Priorita | Schovaný | Zobrazí prioritu nebo přednostní právo přiřazené systémem každému vláknu. |
masky spřažení | Schovaný | Zobrazuje masku spřažení procesoru pro každé vlákno. V multiprocesorovém systému maska spřažení určuje procesory, na kterých může vlákno běžet. |
Pozastavený počet | Schovaný | Poskytuje pozastavený počet. Tento počet určuje, zda lze spustit vlákno. Další informace naleznete v tématu Ukotvení a rozmrazování vláken. |
název procesu | Schovaný | Zobrazí proces, do kterého každé vlákno patří. Data v tomto sloupci můžou být užitečná při ladění mnoha procesů. |
ID procesu | Schovaný | Zobrazuje ID procesu, ke kterému každé vlákno patří. |
kvalifikátor transportu | Schovaný | Jednoznačně identifikuje stroj, ke kterému je debugger připojen. |
Zobrazení a skrytí sloupců tabulky
Na panelu nástrojů okna Vlákna se v rozevíracím seznamu Sloupce nachází seznam dostupných sloupců. Rozbalte rozevírací seznam a výběrem názvu sloupce přepněte jeho viditelnost v tabulce. Viditelné sloupce jsou označené zaškrtnutím v seznamu.
Označení diskusních vláken pro zvláštní pozornost
Pomocí ikony vlajky označte vlákna ke zvláštní pozornosti. Označená vlákna jsou označená červenou ikonou příznaku v tabulce okna Vlákna. Další informace naleznete v tématu Označit a Odznačit vlákna.
Zobrazit pouze označená vlákna
Okno vláken můžete filtrovat tak, aby zobrazovalo pouze označená vlákna. Na panelu nástrojů okna Vlákna vyberte Zobrazit pouze vlákna s příznakem (ikona dvojitého příznaku). Můžete také použít klávesovou zkratku Ctrl + 9. Tato akce je dostupná jenom v případě, že jsou označená vlákna.
Zmrazení a rozmrazení vláken
Když zmrazíte vlákno, systém vlákno nespustí, i když jsou k dispozici zdroje.
V nativním kódu můžete pozastavit nebo obnovit vlákna voláním funkcí systému Windows SuspendThread
a ResumeThread
. Můžete také volat funkce MFC CWinThread::SuspendThread a CWinThread::ResumeThread. Pokud zavoláte funkci SuspendThread
nebo ResumeThread
, změní se pozastavený počet zobrazený v okně Vlákna. Pozastavený počet se nezmění, pokud zablokujete nebo rozmrznete nativní vlákno. Vlákno nelze spustit v nativním kódu, pokud není vlákno rozmrzlé a nemá pozastavený počet nula.
Ve spravovaném kódu se pozastavený počet změní při ukotvení nebo rozmrznutí vlákna. Pokud zmrazíte vlákno ve spravovaném kódu, počet jeho pozastavení je 1. Když zmrazíte vlákno v nativním kódu, počet jeho pozastavení je 0, pokud nepoužíváte volání SuspendThread
.
Poznámka
Při ladění volání z nativního kódu do spravovaného kódu se spravovaný kód spustí ve stejném fyzickém vlákně jako volající nativní kód. Pozastavení nebo zmrazení nativního vlákna také zablokuje spravovaný kód.
Změna provádění pro vybraná vlákna
Můžete ukotvit nebo rozmrazit provádění jednoho nebo více vláken. V okně Vlákna vyberte vlákna, pro která chcete aktualizovat stav spuštění. Na panelu nástrojů okna Vlákna vyberte Zmrazit vlákna (ikona pozastavit přehrávání) nebo Rozmrazit vlákna (zelená ikona přehrávání). Akce se vztahuje pouze na aktuálně vybraná vlákna. Akce ukotvení a rozmrazování jsou k dispozici také v místní nabídce po kliknutí pravým tlačítkem myši pro každé vlákno.
Změna aktuálního vlákna
Žlutá ikona šipky v tabulce okna Vlákna označuje aktuální vlákno (a umístění ukazatele na spuštění). Původní značka aktuálního vlákna také zůstane (zobrazená s ikonou obrysu šipky).
Žlutá ikona šipky v tabulce okna Vlákna označuje aktuální vlákno (a umístění ukazatele na spuštění). Zelená ikona šipky se složeným ocasem označuje, že vlákno, které není aktuální, má aktuální kontext ladicího programu.
Přepnout na jiné vlákno
Aktuální vlákno v ladicím programu můžete přepnout dvěma způsoby. Poklikejte na libovolné vlákno v tabulce okně Vlákna, aby z něj bylo aktuální vlákno. Můžete také kliknout pravým tlačítkem myši na vlákno a vybrat Přepnout na vlákno.
Použijte seskupení a řazení pro vlákna
V okně vláken můžete seskupit vlákna podle stejných kritérií jako dostupné sloupce. Všechna kritéria jsou vždy k dispozici pro seskupení bez ohledu na to, jestli je odpovídající sloupec viditelný v aktuálním zobrazení. Pro tabulku můžete vybrat jenom jedno seskupení.
Když seskupíte vlákna, zobrazí se v tabulce záhlaví pro každou skupinu. Nadpis obsahuje popis skupiny spolu s počtem členů ve skupině. Pokud seskupíte podle název, může se zobrazit seskupení s nadpisy, jako je pracovní vlákno nebo neoznačená vlákna. Vedle každého záhlaví skupiny se zobrazí ikona rozbalovací/sbalovací šipky.
Po použití kritérií seskupení se zobrazení tabulky v okně Vlákna aktualizuje, aby zobrazilo členská vlákna pro každou skupinu pod jejich záhlavím. Pomocí ikony šipky pro rozbalení nebo sbalení skupiny můžete zobrazit nebo skrýt členy v aktuálním zobrazení.
Na vlákna v tabulce okna Threads můžete také použít jedno kritérium řazení. Seskupení má přednost před řazením. Můžete například seskupit vlákna podle kategorie a pak je seřadit podle ID v rámci každé kategorie.
Seskupení vláken v tabulce
Na panelu nástrojů okna Vlákna rozbalte rozevírací seznam Seskupit podle a vyberte kritéria pro seskupení vláken. Použité seskupení můžete odebrat také výběrem možnosti Žádné v rozevíracím seznamu Seskupit podle.
Řazení vláken v tabulce
Řazení aplikujete na vlákna v tabulce okna Vlákna tak, že vyberete záhlaví sloupců v horní části tabulky, například Název nebo ID.
Když vyberete záhlaví sloupce, zobrazení tabulky v okně Vlákna se aktualizuje tak, aby zobrazilo vlákna seřazená podle hodnot ve vybraném sloupci. Vybraný sloupec také zobrazuje ikonu šipky nahoru a dolů. Ikona šipky nahoru označuje řazení podle vybraného sloupce ve vzestupném pořadí. Ikona šipky dolů označuje řazení podle vybraného sloupce v sestupném pořadí. Pokud chcete změnit pořadí řazení, vyberte záhlaví sloupce.
Řazení vláken v rámci skupin
Pokud chcete řadit vlákna v rámci skupin v okně Vlákna, použijte nejprve rozevírací seznam Seskupit podle k použití kritérií seskupení. Potom vyberte záhlaví sloupce, abyste seřadili seskupené vlákna podle hodnot ve vybraném sloupci.
Rozbalte nebo sbalte všechny skupiny
Existuje rychlý způsob, jak zobrazit nebo skrýt všechna seskupení v aktuálním zobrazení. Na panelu nástrojů okna Vlákna vyberte Rozbalit skupiny (ikona dvou rámečků se symbolem plus) nebo Sbalit skupiny (ikona dvou rámečků se symbolem minus).
Hledání vláken
Můžete prohledávat vlákna v tabulce okna Vlákna a hledat konkrétní obsah ve všech viditelných sloupcích tabulky. Při hledání zobrazí Visual Studio řádky vlákna, které obsahují data sloupců, která odpovídají hledanému řetězci. Hledání také prohledá umístění vlákna, které se zobrazí v horní části zásobníku volání ve sloupci Umístění.
Hledání konkrétního obsahu ve vláknech
Existuje několik způsobů, jak vyhledat konkrétní obsah ve vláknech. Na panelu nástrojů okna Vlákna zadejte text, který chcete hledat, do pole Hledat a stiskněte klávesu Enter. Do hledaného řetězce můžete zadat písmena, číslice a speciální znaky, například <
. Po dokončení hledání okno vlákna aktualizuje tabulku, aby zobrazilo vlákna s odpovídajícími výsledky. Visual Studio zvýrazní konkrétní instance, které odpovídají vašemu hledanému řetězci. Pokud se chcete vrátit do běžného zobrazení vlákna, vyberte ikonu X vedle pole Hledat.
Můžete také vyhledat řetězec, který jste hledali dříve. Použijte rozevírací seznam Hledat a vyberte předchozí hledaný výraz.
Prohledejte celý zásobník volání
Ve výchozím nastavení není zásobník volání prohledáván celý. Visual Studio hledá shodu pouze ve vláknech viditelných v tabulce okna Vlákna.
Úplný zásobník volání můžete zahrnout tak, že vyberete Zahrnout zásobníky volání ve vyhledávání (ikona položky seznamu) na panelu nástrojů okna Vlákna. Pokud je tato možnost povolená, ikona položky seznamu má ohraničení.
Zobrazení zásobníků volání a přepínání mezi rámci
Ve vícevláknovém programu má každé vlákno svůj vlastní zásobník volání. Okno Vlákna poskytuje pohodlný způsob zobrazení těchto vláknových zásobníků.
Spropitné
Pro vizuální znázornění zásobníku volání pro každé vlákno použijte okno Paralelní Stohy.
Zobrazit zásobník volání pro vlákno
V tabulce okna Vlákna vyhledejte vlákno, pro které chcete prozkoumat celý zásobník volání. Ve sloupci Umístění vyberte šipku rozvinout/sbalit vlevo od názvu umístění vlákna. Umístění se rozbalí a zobrazí kompletní zásobník volání pro vlákno. Dalším výběrem šipky zobrazíte pouze umístění.
Zobrazit nebo sbalit všechny zásobníky hovorů
Můžete ovládat, zda okno Vlákna vždy zobrazí kompletní zásobníky volání pro všechna vlákna zobrazená v tabulce. Na panelu nástrojů okna Vlákna vyberte Rozbalit zásobníky volání (ikona pole se symbolem plus) nebo Sbalit zásobníky volání (ikona pole se symbolem mínus).