Sdílet prostřednictvím


Postupy: Ladění aplikací spouštěných jako služby systému Windows

Poznámka:

Tento článek se nevztahuje na hostované služby v .NET. Nejnovější obsah ve službách Windows používajících Microsoft.Extensions.Hosting.BackgroundService a šablonu Pracovní služba najdete v tématech:

Služba musí být spuštěna z kontextu Správce řízení služeb, nikoli ze sady Visual Studio. Z tohoto důvodu není ladění služby tak jednoduché jako ladění jiných typů aplikací sady Visual Studio. Chcete-li ladit službu, musíte spustit službu a pak připojit ladicí program k procesu, ve kterém je spuštěný. Aplikaci pak můžete ladit pomocí všech standardních funkcí ladění sady Visual Studio.

Upozornění

K procesu byste se neměli připojovat, pokud nevíte, co je tento proces, a pochopit důsledky připojení a případného zabití tohoto procesu. Pokud se například připojíte k procesu WinLogon a pak zastavíte ladění, systém se zastaví, protože nemůže fungovat bez WinLogonu.

Ladicí program můžete připojit pouze ke spuštěné službě. Proces přílohy přeruší aktuální fungování vaší služby; ve skutečnosti nezastaví nebo pozastaví zpracování služby. To znamená, že pokud je vaše služba spuštěná při zahájení ladění, je při ladění stále technicky ve stavu Spuštěno, ale jeho zpracování bylo pozastaveno.

Po připojení k procesu můžete nastavit zarážky a použít je k ladění kódu. Po ukončení dialogového okna, které slouží k připojení k procesu, jste efektivně v režimu ladění. Pomocí Správce řízení služeb můžete spustit, zastavit, pozastavit a pokračovat ve službě, čímž dosáhnete zarážek, které jste nastavili. Tuto fiktivní službu můžete později odebrat po úspěšném ladění.

Tento článek popisuje ladění služby spuštěné na místním počítači, ale můžete také ladit služby systému Windows, které běží na vzdáleném počítači. Viz Vzdálené ladění.

Poznámka:

Ladění OnStart metody může být obtížné, protože Správce řízení služeb omezuje 30sekundový limit pro všechny pokusy o spuštění služby. Další informace naleznete v tématu Řešení potíží: Ladění služeb systému Windows.

Upozorňující

Pokud chcete získat smysluplné informace pro ladění, musí ladicí program sady Visual Studio najít soubory symbolů pro binární soubory, které se ladí. Pokud ladíte službu, kterou jste vytvořili v sadě Visual Studio, soubory symbolů (soubory PDB) jsou ve stejné složce jako spustitelný soubor nebo knihovna a ladicí program je načte automaticky. Pokud ladíte službu, kterou jste nevytvořili, měli byste nejprve najít symboly pro službu a ujistit se, že je ladicí program najde. Viz Zadání symbolu (.pdb) a zdrojových souborů v ladicím programu sady Visual Studio. Pokud ladíte systémový proces nebo chcete mít symboly pro systémová volání ve službách, měli byste přidat servery symbolů Microsoftu. Viz symboly ladění.

Ladění služby

  1. Sestavte službu v konfiguraci ladění.

  2. Nainstalujte službu. Další informace naleznete v tématu Postupy: Instalace a odinstalace služeb.

  3. Spusťte službu z Správce řízení služeb, Průzkumníka serveru nebo kódu. Další informace naleznete v tématu Postupy: Spuštění služeb.

  4. Spusťte Visual Studio s přihlašovacími údaji pro správu, abyste se mohli připojit k systémovým procesům.

  5. (Volitelné) Na řádku nabídek sady Visual Studio zvolte Nástroje, Možnosti. V dialogovém okně Možnosti zvolte Ladění, Symboly, zaškrtněte políčko Servery symbolů Společnosti Microsoft a pak zvolte tlačítko OK.

  6. Na řádku nabídek zvolte Připojit k procesu z nabídky Ladění nebo Nástroje . (Klávesnice: Ctrl+Alt+P)

    Zobrazí se dialogové okno Procesy .

  7. Zaškrtněte políčko Zobrazit procesy od všech uživatelů.

  8. V části Dostupné procesy zvolte proces vaší služby a pak zvolte Připojit.

    Tip

    Tento proces bude mít stejný název jako spustitelný soubor pro vaši službu.

    Zobrazí se dialogové okno Připojit k procesu .

  9. Zvolte příslušné možnosti a potom kliknutím na TLAČÍTKO OK zavřete dialogové okno.

    Poznámka:

    Teď jste v režimu ladění.

  10. Nastavte všechny zarážky, které chcete použít v kódu.

  11. Přejděte ke Správci řízení služeb a manipulujte se službou, odesílejte příkazy stop, pause a pokračujte tak, aby se dostaly na zarážky. Další informace o spuštění Správce řízení služeb naleznete v tématu Postupy: Spuštění služeb. Další informace najdete v tématu Řešení potíží: Ladění služeb systému Windows.

Ladění Tipy pro služby Systému Windows

Připojení k procesu služby umožňuje ladit většinu, ale ne všechny kód pro tuto službu. Například vzhledem k tomu, že služba již byla spuštěna, nelze kód v metodě služby OnStart nebo kódu v Main metodě, která se používá k načtení služby tímto způsobem, ladit. Jedním ze způsobů, jak toto omezení obejít, je vytvořit v aplikaci služby dočasnou druhou službu, která existuje pouze pro podporu ladění. Můžete nainstalovat obě služby a pak tuto fiktivní službu spustit, aby se proces služby načetl. Po spuštění procesu dočasné služby můžete pomocí nabídky Ladění v sadě Visual Studio připojit k procesu služby.

Zkuste do metody přidat volání, Sleep která zpozdí akci, dokud se k procesu nebudete moct připojit.

Zkuste program změnit na běžnou konzolovou aplikaci. Chcete-li to provést, přepište metodu Main následujícím způsobem, aby mohl běžet jako služba systému Windows i jako konzolová aplikace v závislosti na tom, jak je spuštěna.

Postupy: Spuštění služby systému Windows jako konzolové aplikace

  1. Přidejte do služby metodu, která spouští metody OnStart a OnStop metody:

    internal void TestStartupAndStop(string[] args)  
    {  
        this.OnStart(args);  
        Console.ReadLine();  
        this.OnStop();  
    }  
    
  2. Přepište metodu Main následujícím způsobem:

    static void Main(string[] args)  
    {  
        if (Environment.UserInteractive)  
        {  
            MyNewService service1 = new MyNewService(args);  
            service1.TestStartupAndStop(args);  
        }  
        else  
        {  
            // Put the body of your old Main method here.  
        }  
    }
    
  3. Na kartě Aplikace vlastností projektu nastavte typ výstupu na konzolovou aplikaci.

  4. Zvolte Spustit ladění (F5).

  5. Pokud chcete program spustit jako službu systému Windows znovu, nainstalujte ho a spusťte ho obvyklým způsobem pro službu systému Windows. Tyto změny není nutné převrátit.

V některých případech, například když chcete ladit problém, ke kterému dochází pouze při spuštění systému, musíte použít ladicí program systému Windows. Stáhněte sadu Windows Driver Kit (WDK) a podívejte se, jak ladit služby systému Windows.

Viz také