Sdílet prostřednictvím


Návod: Ladění vícevláknové aplikace pomocí okna Vlákna (C#, Visual Basic, C++)

Několik prvků uživatelského rozhraní sady Visual Studio vám pomůže ladit vícevláknové aplikace. Tento článek představuje funkce ladění s více vlákny v okně editoru kódu, panelu nástrojů Umístění ladění a okna Vlákna . Informace o dalších nástrojích pro ladění vícevláknových aplikací najdete v tématu Začínáme s laděním vícevláknových aplikací.

Dokončení tohoto kurzu trvá jen několik minut a seznámí vás se základy ladění vícevláknových aplikací.

Vytvoření projektu vícevláknové aplikace

Vytvořte následující projekt vícevláknové aplikace, který se použije v tomto kurzu:

  1. Otevřete Visual Studio a vytvořte nový projekt.

    Pokud není otevřené úvodní okno, zvolte Okno Start souboru>.

    V úvodním okně zvolte Nový projekt.

    V úvodním okně zvolte Vytvořit nový projekt.

    V okně Vytvořit nový projekt zadejte nebo zadejte konzolu do vyhledávacího pole. Potom v seznamu Jazyků zvolte C# nebo C++ a pak ze seznamu Platformy zvolte Windows .

    Po použití filtrů jazyka a platformy zvolte konzolovou aplikaci pro .NET Core, .NET 5 nebo C++ a pak zvolte Další.

    Poznámka:

    Pokud nevidíte správnou šablonu, přejděte do části Nástroje Získat nástroje>a funkce..., čímž se otevře Instalační program pro Visual Studio. Zvolte vývoj desktopových aplikací .NET nebo vývoj desktopových aplikací pomocí úlohy C++ a pak zvolte Upravit.

    V okně Konfigurovat nový projekt zadejte název nebo do pole Název projektu použijte výchozí název. Potom zvolte Další nebo Vytvořit podle toho, která možnost je k dispozici.

    Pro .NET Core nebo .NET 5 nebo novější zvolte doporučenou cílovou architekturu nebo .NET 8 a pak zvolte Vytvořit.

    Zobrazí se nový projekt konzoly. Po vytvoření projektu se zobrazí zdrojový soubor. V závislosti na zvoleném jazyce se zdrojový soubor může jmenovat Program.cs nebo MyThreadWalkthroughApp.cpp.

  2. Nahraďte kód ve zdrojovém souboru ukázkovým kódem jazyka C# nebo C++ z části Začínáme s laděním vícevláknových aplikací.

  3. Vyberte Uložit>soubor vše.

Spuštění ladění

  1. Ve zdrojovém kódu vyhledejte následující řádky:

    Thread.Sleep(3000);
    Console.WriteLine();
    
  2. Nastavte zarážku na Console.WriteLine(); čáře kliknutím do levého hřbetu nebo výběrem čáry a stisknutím klávesy F9.

    Zarážka se zobrazí jako červený kruh v levém hřbetu vedle řádku kódu.

  3. Vyberte Spustit ladění nebo stiskněte klávesu F5.>

    Aplikace se spustí v režimu ladění a pozastaví se na zarážce.

  4. V režimu přerušení otevřete okno Vlákna výběrem možnosti Ladit>vlákna systému Windows>. Abyste mohli otevřít vlákna a další okna ladění, musíte být v relaci ladění.

Prozkoumání značek vláken

  1. Ve zdrojovém kódu vyhledejte Console.WriteLine(); řádek.

    1. V okně Vlákna klikněte pravým tlačítkem myši a v nabídce vyberte Zobrazit vlákna ve zdrojiShow Threads in Source.

    U řádku zdrojového kódu se teď vedle řádku zdrojového kódu zobrazí ikona Thread Markerznačky vlákna . Značka vlákna označuje, že vlákno je v tomto umístění zastaveno. Pokud je v umístění více než jedno zastavené vlákno, zobrazí se multiple threads ikona.

  2. Najeďte myší na značku vlákna. Zobrazí se popis s názvem a ID vlákna pro zastavené vlákno nebo vlákna. Názvy vláken mohou být <No Name>.

    Tip

    Pokud chcete pomoct identifikovat vlákna bez názvů, můžete je přejmenovat v okně Vlákna . Klikněte pravým tlačítkem myši na vlákno a vyberte Přejmenovat.

  3. Kliknutím pravým tlačítkem myši na značku vlákna ve zdrojovém kódu zobrazíte dostupné možnosti v místní nabídce.

Označení a odstranění označení vlákna

Vlákna můžete označit příznakem, abyste měli přehled o vláknech, na která chcete věnovat zvláštní pozornost.

Označte a zrušte označení vláken z editoru zdrojového kódu nebo z okna Vlákna . Zvolte, jestli se mají zobrazovat pouze vlákna s příznakem nebo všechna vlákna, z panelu nástrojů okna Umístění ladění nebo Vlákna . Výběry provedené z libovolného umístění mají vliv na všechna umístění.

Označení vláken příznakem a zrušením označení vláken ve zdrojovém kódu

  1. Otevřete panel nástrojů Umístění ladění výběrem možnosti Zobrazit>panely nástrojů>Pro ladění umístění. Můžete také kliknout pravým tlačítkem myši do oblasti panelu nástrojů a vybrat Umístění ladění.

  2. Panel nástrojů Umístění ladění má tři pole: Proces, Vlákno a Rámec zásobníku. Rozevírací seznam Vláken a všimněte si, kolik vláken existuje. V seznamu vláken je aktuálně spuštěné vlákno označeno > symbolem.

  3. V okně zdrojového kódu najeďte myší na ikonu značky vlákna v hřbetu a vyberte ikonu příznaku (nebo jednu z ikon prázdných příznaků) v datovém tipu. Ikona příznaku se změní na červenou.

    Můžete také kliknout pravým tlačítkem myši na ikonu značky vlákna, přejít na příznak a pak vybrat vlákno, které chcete označit příznakem z místní nabídky.

  4. Na panelu nástrojů Umístění ladění vyberte ikonu Show Flagged ThreadsZobrazit pouze vlákna s příznakem , vpravo od pole Vlákno. Ikona se zobrazí šedě, pokud není označeno jedno nebo více vláken.

    V rozevíracím seznamu Vlákna na panelu nástrojů se teď zobrazí pouze vlákno s příznakem. Pokud chcete znovu zobrazit všechna vlákna, znovu vyberte ikonu Zobrazit pouze vlákna s příznakem .

    Tip

    Po označení některých vláken můžete kurzor umístit do editoru kódu, kliknout pravým tlačítkem myši a vybrat Spustit vlákna s příznakem kurzoru. Nezapomeňte zvolit kód, ke kterému budou mít přístup všechna vlákna označená příznakem. Spuštění vláken označených příznakem kurzoru pozastaví vlákna na vybraném řádku kódu, což usnadňuje řízení pořadí provádění ukotvením a rozmrazením vláken.

  5. Pokud chcete přepnout stav s příznakem nebo neoznačenou v aktuálně spuštěném vlákně, vyberte nalevo od tlačítka Zobrazit pouze vlákna s příznakem, které je označeno příznakem. Označení aktuálního vlákna příznakem je užitečné pro vyhledání aktuálního vlákna, pokud se zobrazují pouze vlákna s příznakem.

  6. Pokud chcete zrušit označení vlákna, najeďte myší na značku vlákna ve zdrojovém kódu a výběrem ikony červeného příznaku ho vymažte, nebo klikněte pravým tlačítkem myši na značku vlákna a vyberte Zrušit označení.

Označení vláken příznakem a zrušením označení vláken v okně Vlákna

V okně Vlákna mají vlákna označená příznakem vedle nich červené ikony příznaku, zatímco nechtěná vlákna, pokud jsou zobrazena, mají prázdné ikony osnovy.

Threads Window

Výběrem ikony příznaku můžete změnit stav vlákna na označený nebo neoznačené v závislosti na aktuálním stavu.

Můžete také kliknout pravým tlačítkem myši na řádek a v místní nabídce vybrat Příznak, Zrušit označení nebo Zrušit označení všech vláken.

Panel nástrojů okna Vláknataké tlačítko Zobrazit pouze vlákna s příznakem, což je pravá jedna ze dvou ikon příznaků. Funguje stejně jako tlačítko na panelu nástrojů Umístění ladění a na obou tlačítcích řídí zobrazení v obou umístěních.

Další funkce okna Vláken

V okně Vlákna vyberte záhlaví libovolného sloupce a seřaďte vlákna podle tohoto sloupce. Pokud chcete pořadí řazení vrátit zpět, vyberte ho znovu. Pokud se zobrazují všechna vlákna, výběrem sloupce ikony příznaku seřadíte vlákna podle příznaku nebo neschváliného stavu.

Druhý sloupec okna Vlákna (bez záhlaví) je sloupec Aktuální vlákno . Žlutá šipka v tomto sloupci označuje aktuální bod spuštění.

Sloupec Umístění ukazuje, kde se každé vlákno zobrazuje ve zdrojovém kódu. Vyberte šipku rozbalení vedle položky Umístění nebo najeďte myší na položku, aby se zobrazil zásobník částečných volání pro dané vlákno.

Tip

Pro grafické zobrazení zásobníků volání pro vlákna použijte okno Paralelní zásobníky . Pokud chcete otevřít okno při ladění, vyberte Ladit>paralelní zásobníky Windows.>

Kromě příznaku, Unflag a Unflag All Threads má místní nabídka kliknutí pravým tlačítkem myši pro položky okna Vlákna:

  • Tlačítko Zobrazit vlákna ve zdroji
  • Šestnáctkové zobrazení, které změní IDvlákna v okně Vlákna z desítkového na šestnáctkový formát.
  • Přepněte na vlákno, které okamžitě přepne spuštění do daného vlákna.
  • Přejmenování, které umožňuje změnit název vlákna.
  • Ukotvit a zmrazit příkazy.

Ukotvení a rozmrznutí provádění vlákna

Vlákna můžete ukotvit nebo pozastavit a obnovit, abyste mohli řídit pořadí, ve kterém vlákna fungují. Zmrazení a rozmrazování vláken vám může pomoct vyřešit problémy souběžnosti, jako jsou zablokování a podmínky časování.

Tip

Pokud chcete sledovat jedno vlákno bez ukotvení jiných vláken, což je také běžný scénář ladění, přečtěte si téma Začínáme s laděním vícevláknových aplikací.

Pokud chcete ukotvit a odblokovat vlákna:

  1. V okně Vlákna klikněte pravým tlačítkem myši na libovolné vlákno a pak vyberte Ukotvit. Ikona Pozastavit ve sloupci Aktuální vlákno označuje, že vlákno je zablokovaný.

  2. Vyberte Sloupce na panelu nástrojů okna Vlákna a potom vyberte Pozastavený počet , aby se zobrazil sloupec Pozastavený počet . Hodnota pozastaveného počtu pro ukotvené vlákno je 1.

  3. Klikněte pravým tlačítkem myši na ukotvené vlákno a vyberte Thaw.

    Ikona Pozastavit zmizí a hodnota pozastaveného počtu se změní na 0.

Přepnutí na jiné vlákno

Při pokusu o přepnutí do jiného vlákna se může zobrazit okno aplikace v režimu přerušení. V tomto okně zjistíte, že vlákno nemá žádný kód, který může aktuální ladicí program zobrazit. Můžete například ladit spravovaný kód, ale vlákno je nativní kód. Okno nabízí návrhy k vyřešení problému.

Přepnutí na jiné vlákno:

  1. V okně Vlákna si poznamenejte ID aktuálního vlákna, což je vlákno se žlutou šipkou ve sloupci Aktuální vlákno. Chcete-li pokračovat v aplikaci, budete chtít přepnout zpět na toto vlákno.

  2. Klikněte pravým tlačítkem myši na jiné vlákno a v místní nabídce vyberte Přepnout na vlákno .

  3. Všimněte si, že umístění žluté šipky se změnilo v okně Vlákna. Původní aktuální značka vlákna zůstane také jako obrys.

    Podívejte se na popis značky vlákna ve zdrojovém editoru kódu a seznam v rozevíracím seznamu Vlákno na panelu nástrojů Umístění ladění. Všimněte si, že aktuální vlákno se tam také změnilo.

  4. Na panelu nástrojů Umístění ladění vyberte jiné vlákno ze seznamu Vláken . Všimněte si, že aktuální vlákno se také změní v ostatních dvou umístěních.

  5. V editoru zdrojového kódu klikněte pravým tlačítkem myši na značku vlákna, přejděte na přepínač na vlákno a ze seznamu vyberte jiné vlákno. Všimněte si, že aktuální vlákno se změní ve všech třech umístěních.

Se značkou vlákna ve zdrojovém kódu můžete přepnout pouze na vlákna, která jsou v daném umístění zastavena. Pomocí okna Vlákna a panelu nástrojů Umístění ladění můžete přepnout na libovolné vlákno.

Seznámili jste se se základy ladění vícevláknových aplikací. Pomocí okna Vlákna, seznamu Vláken na panelu nástrojů Umístění ladění nebo značek vláken ve zdrojovém kódu můžete sledovat, označit a zrušit jejich označení a ukotvit je.