Vlákna a procesy jsou v informatice související koncepty.Obě představují sekvence pokynů, které musí být provedeny v určitém pořadí.Pokyny v oddělených vláknech či procesy lze však spustit paralelně.
Procesy v operačním systému existují a odpovídají tomu, co uživatelé vidí jako programy nebo aplikace.Vlákno, naopak, existuje v rámci procesu.Z tohoto důvodu jsou vlákna někdy označována jako procesy LWP.Každý proces se skládá z jednoho nebo více vláken.
Existence více procesů umožňuje počítači provádět více úkolů najednou.Existence více vláken umožňuje procesu provádět současně samostatné činnosti.V počítači s více procesory mohou procesy a vlákna běžet na různých procesorech.To umožňuje pravé paralelní zpracování.
Perfektní paralelní zpracování není vždy možné.Vlákna v některých případech musí být synchronizována.Jedno vlákno může muset čekat na výsledky z jiného vlákna, nebo jedno vlákno může potřebovat výhradní přístup k prostředku, který používá jiné vlákno.Potíže se synchronizací jsou běžnou příčinou chyb ve vícevláknových aplikacích.Vlákna mohou někdy skončit čekáním na prostředek, který nikdy nebude k dispozici.Výsledkem je stav nazývaný zablokování.
Ladicí program Visual Studio poskytuje výkonné, ale snadno použitelné nástroje pro ladění procesů a podprocesů.
Nástroje pro ladění vláken a procesů v aplikaci Visual Studio
Primární nástroje pro práci s procesy v Visual Studio jsou dialogové okno Připojit k procesu, okno Procesy a panel nástrojů Umístění ladění.Základními nástroji pro ladění podprocesů je okno Vlákna, značky vlákna ve zdrojových oknech a panel nástrojů Umístění ladění.
Základními nástroji pro ladění aplikací s více vlákny jsou okna Paralelní zásobníky a Paralelní úlohy, Paralelní sledování, a Vlákna GPU.
Následující tabulka uvádí dostupné informace a akce, které můžete provádět v každém z těchto míst:
Uživatelské rohraní
Dostupné informace
Akce, které můžete provést
Dialogové okno Připojit k procesu
Dostupné procesy, ke kterým se lze připojit:
Název procesu (.exe)
Číslo ID procesu
Nadpis řádku nabídek
Typ (Managed v4.0; Managed v2.0, v1.1, v1.0; x86; x64; IA64)
Uživatelské jméno (název účtu)
Číslo relace
Vyberte proces, ke kterému se chcete připojit
Vyberte vzdálený počítač
Změnit typ spojení na připojení ke vzdáleným počítačům
Okno Procesy
Připojené procesy:
Název procesu
Číslo ID procesu
Cesta ke zpracování .exe
Nadpis řádku nabídek
Stav (Break.probíhá)
Ladění (nativní, spravované, atd.)
Typ přenosu (výchozí, nativní bez ověření)
Kandidát spojení (vzdálený počítač)
Nástroje:
Připojit
Odpojit
Ukončit
Místní nabídky:
Připojit
Odpojit
Odpojit při zastavení ladění
Ukončit
Okno Vlákna
Vlákna v aktuálním procesu:
ID vlákna
Spravované ID
Kategorie (hlavní vlákno, vlákno rozhraní, vzdálené volání rutiny procedury nebo pracovní vlákno)
Název vlákna
Místo, kde bylo vlákno vytvořeno
Priorita
Maska příbuznosti
Pozastavený počet
Název procesu
Indikátor příznaku
Indikátor pozastavení
Nástroje:
Hledat
Prohledat zásobník volání
Označit jen můj kód
Volba vlastního modulu příznaků
Seskupit podle
Sloupce
Rozbalit/sbalit zásobníky volání
Rozbalit/sbalit skupiny
Zmrazit / odblokovat vlákna
Místní nabídky:
Zobrazit vlákna ve zdroji
Přepnout na vlákno
Zmrazit spuštěné vlákno
Povolit zmrazené vlákno
Označit vlákno pro další studie
Zrušit označení vlákna
Přejmenovat vlákno
Zobrazení a skrytí vláken
Další akce:
Zobrazit zásobník volání pro vlákno v DataTip
Okno zdroje
Indikátory vláken v levém hřbetu označují jedno nebo více vláken (vypnuté ve výchozím nastavení, zapnuté pomocí místní nabídky v okně Vlákna)
Místní nabídky:
Přepnout na vlákno
Označit vlákno pro další studie
Zrušit označení vlákna
Panel nástrojů Umístění ladění
Aktuální proces
Zobrazit miniaturu aplikace
Pozastaví aplikaci
Obnovit aplikaci
Pozastavit a vypnout aplikaci
Aktuální vlákno
Přepnout aktuální značku stavu vlákna
Zobrazit pouze vlákna označená příznakem
Zobrazit pouze aktuální proces.
Aktuální rámec zásobníku
Přepnout na jiný proces
Pozastavit, pokračovat nebo vypnout aplikaci
Přepněte do jiného vlákna v aktuálním procesu
Přepněte do jiného zásobníku v aktuálním vlákně
Označit nebo zrušit označení aktuálních vláken příznakem
Zobrazit pouze vlákna označená příznakem
Zobrazit pouze aktuální proces
Okno Paralelní zásobníky
Zásobníky volání pro více vláken v jednom okně.
Aktivní zásobník snímků pro každé vlákno.
Volající a volané pro libovolnou metodu.
Odfiltrovat zadaná vlákna
Přepnout do zobrazení Paralelní úlohy
Označit nebo zrušit označení vlákna příznakem
Lupa
Okno Paralelní úlohy
Zobrazit informace o objektech Task, včetně ID úkolu, stavu úkolu (plánovaný, spuštěný, čekající, zablokovaný) a tom, které vlákno je přiřazeno k úkolu.
Aktuální umístění v zásobníku volání.
Delegát předaný do úlohy v době vytvoření
Přepnout do aktuální úlohy
Označit nebo zrušit označení úlohy příznakem
Zmrazit nebo odblokovat úkol
Okno Paralelní sledování
Sloupec příznaku, kde lze označit vlákno, kterému chcete věnovat zvláštní pozornost.
Sloupec rámce, ve kterém šipka označuje vybraný rámec.
Konfigurovatelný sloupec, který může zobrazit počítač, proces, dlaždici, úlohu a vlákna.
Označit nebo zrušit označení vlákna příznakem
Zobrazit pouze vlákna označená příznakem
Rámce přepínačů
Seřazení sloupce
Seskupit vlákna
Zmrazit nebo odblokovat vlákna
export dat v okně paralelního sledování
Okno Vlákna GPU
Sloupec příznaku, kde lze označit vlákno, kterému chcete věnovat zvláštní pozornost.
Aktivní vlákno sloupce, ve kterém žlutá šipka označuje aktivní vlákno.Šipka označuje vlákno, kde se spuštění dostalo do ladicího programu.
Sloupec Počet vláken, který zobrazuje počet podprocesů ve stejném umístění.
Sloupec Řádek, který zobrazuje řádek kódu, kde je každá skupina vlákna umístěna.
Sloupec Adresa, který zobrazuje adresu instrukce, kde je každá skupina vlákna umístěna.
Sloupec Umístění, který je umístěním v kódu adresy.
Sloupec Stav, který ukazuje, zda je podproces aktivní nebo blokován.
Sloupec Vedle sebe, který zobrazuje indexu dlaždice pro podprocesy v řádku.