Ladění více procesů (C#, Visual Basic, C++)

Visual Studio může ladit řešení, které má několik procesů. Mezi procesy, přerušením, pokračováním a krokováním mezi procesy můžete spustit a přepínat mezi zdroji, zastavit ladění a ukončit nebo odpojit od jednotlivých procesů.

Zahájení ladění s několika procesy

Pokud v řešení sady Visual Studio může běžet více než jeden projekt nezávisle, můžete vybrat, který projekt ladicí program spustí. Aktuální spouštěcí projekt se v Průzkumník řešení zobrazí tučně.

Pokud chcete změnit spouštěný projekt, klikněte v Průzkumník řešení pravým tlačítkem myši na jiný projekt a vyberte Nastavit jako spouštěný projekt.

Pokud chcete spustit ladění projektu z Průzkumník řešení bez toho, aby byl spouštěný projekt, klikněte pravým tlačítkem myši na projekt a vyberte Spustit>novou instanci nebo Krok do nové instance.

Nastavení spouštěcího projektu nebo více projektů z vlastností řešení:

  1. Vyberte řešení v Průzkumník řešení a potom na panelu nástrojů vyberte ikonu Vlastnosti nebo klikněte pravým tlačítkem myši na řešení a vyberte Vlastnosti.

  2. Na stránce Vlastnosti vyberte možnost Společné vlastnosti>spouštěný projekt.

    Changing the startup type for a project

  3. Vyberte Aktuální výběr, Jeden spouštěný projekt a soubor projektu nebo Více projektů po spuštění.

    Pokud vyberete více projektů po spuštění, můžete změnit pořadí spuštění a akci, která se má provést pro každý projekt: Spustit, Spustit bez ladění nebo Žádné.

  4. Chcete-li použít a zavřít dialogové okno, vyberte Použít nebo OK .

Připojení k procesu

Ladicí program se také může připojit k aplikacím spuštěným v procesech mimo Visual Studio, včetně na vzdálených zařízeních. Po připojení k aplikaci můžete použít ladicí program sady Visual Studio. Funkce ladění můžou být omezené. Závisí na tom, jestli byla aplikace vytvořena s informacemi o ladění, jestli máte přístup ke zdrojovému kódu aplikace a jestli kompilátor JIT sleduje ladicí informace.

Další informace naleznete v tématu Připojení ke spuštěným procesům.

Připojení ke spuštěném procesu:

  1. Když je aplikace spuštěná, vyberte Připojit k procesu ladění>.

    Attach to Process dialog box

  2. V dialogovém okně Připojit k procesu vyberte proces ze seznamu Dostupné procesy a pak vyberte Připojit.

Poznámka:

Ladicí program se automaticky nepřipojí k podřízeného procesu, který je spuštěn laděným procesem, i když je podřízený projekt ve stejném řešení. Pokud chcete ladit podřízený proces, připojte se k podřízeného procesu po jeho spuštění nebo nakonfigurujte Editor registru systému Windows tak, aby spustil podřízený proces v nové instanci ladicího programu.

Použití Editoru registru k automatickému spuštění procesu v ladicím programu

Někdy může být potřeba ladit spouštěcí kód pro aplikaci, která je spuštěna jiným procesem. Mezi příklady patří služby a akce vlastního nastavení. Ladicí program můžete spustit a automaticky připojit k aplikaci.

  1. Spusťte Editor registru systému Windows spuštěním regedit.exe.

  2. V Editoru registru přejděte na HKEY_LOCAL_MACHINE\Software\Microsoft\systém Windows NT\CurrentVersion\Image File Execution Options.

  3. Vyberte složku aplikace, kterou chcete spustit v ladicím programu.

    Pokud aplikace není uvedená jako podřízená složka, klikněte pravým tlačítkem na Možnosti spuštění souboru obrázku, vyberte Nový>klíč a zadejte název aplikace. Nebo klikněte pravým tlačítkem myši na nový klíč ve stromu, vyberte Přejmenovat a zadejte název aplikace.

  4. Klikněte pravým tlačítkem myši na nový klíč ve stromu a vyberte Možnost Nová>hodnota řetězce.

  5. Změňte název nové hodnoty z nové hodnoty # 1 na debugger.

  6. Klikněte pravým tlačítkem na ladicí program a vyberte Upravit.

    Edit String dialog box

  7. V dialogovém okně Upravit řetězec zadejte vsjitdebugger.exe do pole Údaj hodnoty a pak vyberte OK.

    Automatic debugger start entry in regedit.exe

Ladění s několika procesy

Při ladění aplikace s několika procesy ovlivňují příkazy ladicího programu ve výchozím nastavení přerušení, krokování a pokračování příkazů ladicího programu. Například když je proces pozastaven na zarážce, provádění všech ostatních procesů je také pozastaveno. Toto výchozí chování můžete změnit, abyste získali větší kontrolu nad cíli příkazů provádění.

Chcete-li změnit, zda jsou všechny procesy pozastaveny, když jeden proces přeruší:

  • V části Nástroje (nebo Ladění)> Možnosti>Ladění>Obecné zaškrtněte nebo zrušte zaškrtnutí políčka Přerušit všechny procesy, když jeden proces přeruší.

Přerušení, krokování a pokračování příkazů

Následující tabulka popisuje chování příkazů ladění, když je zaškrtnuto políčko Přerušit všechny procesy, pokud je zaškrtnuto nebo zrušen výběr jednoho procesu :

Příkaz Selected Odznačeno
Ladění>– vše Všechny procesy se přeruší. Všechny procesy se přeruší.
Pokračovat v ladění> Všechny procesy se obnoví. Všechny pozastavené procesy se obnoví.
Ladění>kroku do, krokování nebo krokování Všechny procesy se spouštějí, zatímco aktuální kroky procesu.
Všechny procesy se pak přeruší.
Aktuální kroky procesu
Pozastavené procesy se obnoví.
Spuštěné procesy budou pokračovat.
Ladění>kroku do aktuálního procesu, krokování nad aktuálním procesem nebo krokování aktuálního procesu Aktuální kroky procesu
Ostatní procesy udržují svůj stávající stav (pozastavené nebo spuštěné).
Zarážka zdrojového okna Všechny procesy se přeruší. Přeruší se pouze proces zdrojového okna.
Zdrojové okno Spustit na kurzor
Zdrojové okno musí být v aktuálním procesu.
Všechny procesy běží, zatímco proces zdrojového okna běží na kurzoru a pak se přeruší.
Všechny ostatní procesy se pak přeruší.
Proces zdrojového okna se spustí na kurzor.
Ostatní procesy udržují svůj stávající stav (pozastavené nebo spuštěné).
Proces přerušení okna >Procesy Vybrané konce procesů
Ostatní procesy udržují svůj stávající stav (pozastavené nebo spuštěné).
Okno >Procesy – pokračovat v procesu Vybraný proces se obnoví.
Ostatní procesy udržují svůj stávající stav (pozastavené nebo spuštěné).

Vyhledání zdrojových a symbolových souborů (.pdb)

K navigaci ve zdrojovém kódu procesu potřebuje ladicí program přístup ke zdrojovým souborům a souborům symbolů. Další informace naleznete v tématu Zadání symbolu (.pdb) a zdrojových souborů.

Pokud nemůžete získat přístup k souborům pro proces, můžete k navigaci použít okno Zpětné překladu . Další informace naleznete v tématu Postupy: Použití okna zpětného překladu.

Přepínání mezi procesy

Při ladění se můžete připojit k více procesům, ale v ladicím programu je v daném okamžiku aktivní jenom jeden proces. Aktivní nebo aktuální proces můžete nastavit na panelu nástrojů Umístění ladění nebo v okně Procesy . Aby bylo možné přepínat mezi procesy, musí být oba procesy v režimu přerušení.

Nastavení aktuálního procesu z panelu nástrojů Umístění ladění:

  1. Pokud chcete otevřít panel nástrojů Umístění ladění, vyberte Zobrazit panely nástrojů>Umístění> ladění.

  2. Během ladění vyberte na panelu nástrojů Umístění ladění proces, který chcete nastavit jako aktuální proces z rozevíracího seznamu Proces .

    Switch between processes

Nastavení aktuálního procesu z okna Procesy:

  1. Chcete-li otevřít okno Procesy při ladění, vyberte Ladit>procesy systému Windows>.

  2. V okně Procesy je aktuální proces označen žlutou šipkou. Poklikejte na proces, který chcete nastavit jako aktuální proces.

    Processes window

Přechod na proces ho nastaví jako aktuální proces pro účely ladění. Okna ladicího programu zobrazují stav aktuálního procesu a krokovací příkazy ovlivňují pouze aktuální proces.

Zastavení ladění s několika procesy

Když ve výchozím nastavení vyberete >Ladění zastavit ladění, ladicí program skončí nebo oddělí od všech procesů.

  • Pokud byl aktuální proces spuštěn v ladicím programu, proces je ukončen.

  • Pokud jste ladicí program připojili k aktuálnímu procesu, ladicí program se odpojí od procesu a ponechá proces spuštěný.

Pokud spustíte ladění procesu z řešení sady Visual Studio, připojte se k jinému procesu, který je již spuštěný, a pak zvolte Zastavit ladění, relace ladění skončí. Proces, který byl spuštěn v sadě Visual Studio, končí, zatímco proces, který jste připojili k průběžnému provozu.

Chcete-li řídit způsob, jakým zastavení ladění ovlivňuje jednotlivé procesy, klikněte v okně Procesy pravým tlačítkem myši na proces a potom zaškrtněte nebo zrušte zaškrtnutí políčka Odpojit při zastavení ladění.

Poznámka:

Přerušení všech procesů, když jeden proces přeruší možnost ladicího programu, nemá vliv na zastavení, ukončení nebo odpojení od procesů.

Zastavení, ukončení a odpojení příkazů

Následující tabulka popisuje chování zastavení, ukončení a odpojení příkazů ladicího programu s několika procesy:

Příkaz Popis
Ladění>zastavení ladění Pokud se chování nezmění v okně Procesy , ukončí se procesy spuštěné ladicím programem a připojené procesy se odpojily.
Ladění>ukončit vše Všechny procesy jsou ukončeny.
Ladění>odpojování všech Ladicí program se oddělí od všech procesů.
Proces odpojení okna >Procesy Ladicí program se odpojte od vybraného procesu.
Ostatní procesy udržují svůj stávající stav (pozastavené nebo spuštěné).
Proces ukončení okna >Procesy Vybraný proces je ukončen.
Ostatní procesy udržují svůj stávající stav (pozastavené nebo spuštěné).
Odpojení okna >procesů při zastavení ladění Pokud je tato možnost vybraná, ladění>zastavit ladění se od vybraného procesu odpojí.
Pokud není vybraná, >ladění zastavit ladění ukončí vybraný proces.