Megosztás a következőn keresztül:


Útmutató: Windows-szolgáltatásalkalmazások hibakeresése

Feljegyzés

Ez a cikk nem vonatkozik a .NET-ben üzemeltetett szolgáltatásokra. A Windows-szolgáltatások és Microsoft.Extensions.Hosting.BackgroundService a Worker Service-sablon legújabb tartalmaiért tekintse meg a következőt:

A szolgáltatást nem a Visual Studióból, hanem a Services Control Manager környezetéből kell futtatni. Ezért a szolgáltatás hibakeresése nem olyan egyszerű, mint más Visual Studio-alkalmazástípusok hibakeresése. A szolgáltatás hibakereséséhez el kell indítania a szolgáltatást, majd csatolnia kell egy hibakeresőt ahhoz a folyamathoz, amelyben fut. Ezután a Visual Studio összes szabványos hibakeresési funkciójának használatával hibakeresést végezhet az alkalmazásban.

Figyelemfelhívás

Ne csatoljon egy folyamatot, hacsak nem ismeri a folyamatot, és nem érti a folyamathoz való csatolás és esetleg a folyamat elpusztításának következményeit. Ha például a WinLogon-folyamathoz csatolja, majd leállítja a hibakeresést, a rendszer leáll, mert nem működik WinLogon nélkül.

A hibakeresőt csak egy futó szolgáltatáshoz csatolhatja. A mellékletfolyamat megszakítja a szolgáltatás aktuális működését; valójában nem állítja le vagy szünetelteti a szolgáltatás feldolgozását. Vagyis ha a szolgáltatás a hibakeresés megkezdésekor fut, akkor a hibakeresés során technikailag még mindig a Kezdő állapotban van, de a feldolgozás fel lett függesztve.

A folyamathoz való csatolás után töréspontokat állíthat be, és ezekkel hibakeresést végezhet a kódban. Miután kilép a folyamathoz csatolandó párbeszédpanelről, hatékonyan hibakeresési módban van. A Szolgáltatásvezérlővel elindíthatja, leállíthatja, szüneteltetheti és folytathatja a szolgáltatást, így eléri a beállított töréspontokat. A hibakeresés sikeressége után később eltávolíthatja ezt a próbaszolgáltatást.

Ez a cikk a helyi számítógépen futó szolgáltatások hibakeresését ismerteti, de a távoli számítógépen futó Windows-szolgáltatásokat is hibakeresésre használhatja. Lásd: Távoli hibakeresés.

Feljegyzés

A módszer hibakeresése OnStart nehéz lehet, mert a Services Control Manager 30 másodperces korlátot ír elő a szolgáltatás indítására tett minden kísérletre. További információ: Hibaelhárítás: A Windows-szolgáltatások hibakeresése.

Figyelmeztetés

A hibakereséssel kapcsolatos hasznos információk eléréséhez a Visual Studio hibakeresőjének meg kell keresnie a hibakeresés alatt álló bináris fájlok szimbólumfájljait. Ha a Visual Studióban létrehozott szolgáltatást keres, a szimbólumfájlok (.pdb fájlok) ugyanabban a mappában találhatók, mint a végrehajtható vagy a tár, és a hibakereső automatikusan betölti őket. Ha olyan szolgáltatást keres, amelyet nem készített, először keresse meg a szolgáltatás szimbólumait, és győződjön meg arról, hogy a hibakereső megtalálja őket. Lásd: Szimbólum (.pdb) és forrásfájlok megadása a Visual Studio Hibakeresőben. Ha hibakeresést végzett egy rendszerfolyamaton, vagy azt szeretné, hogy a szolgáltatásokban a rendszerhívások szimbólumai legyenek, vegye fel a Microsoft Szimbólumkiszolgálókat. Lásd a hibakeresési szimbólumokat.

Szolgáltatás hibakeresése

  1. Hozza létre a szolgáltatást a hibakeresési konfigurációban.

  2. Telepítse a szolgáltatást. További információ : How to: Install and Uninstall Services.

  3. Indítsa el a szolgáltatást a Services Control Managerből, a Kiszolgálókezelőből vagy a kódból. További információt a Szolgáltatások indítása című témakörben talál.

  4. Indítsa el a Visual Studiót rendszergazdai hitelesítő adatokkal, hogy a rendszerfolyamatokhoz csatolhassa.

  5. (Nem kötelező) A Visual Studio menüsávján válassza az Eszközök és beállítások lehetőséget. A Beállítások párbeszédpanelen válassza a Hibakeresés, Szimbólumok lehetőséget, jelölje be a Microsoft Szimbólumkiszolgálók jelölőnégyzetet, majd kattintson az OK gombra.

  6. A menüsávon válassza a Csatolás a folyamathoz lehetőséget a Hibakeresés vagy az Eszközök menüben. (Billentyűzet: Ctrl+Alt+P)

    Megjelenik a Folyamatok párbeszédpanel.

  7. Jelölje be az összes felhasználó folyamatainak megjelenítése jelölőnégyzetet.

  8. Az Elérhető folyamatok szakaszban válassza ki a szolgáltatáshoz tartozó folyamatot, majd válassza a Csatolás lehetőséget.

    Tipp.

    A folyamat neve megegyezik a szolgáltatás végrehajtható fájljának nevével.

    Megjelenik a Csatolás a folyamathoz párbeszédpanel.

  9. Válassza ki a megfelelő beállításokat, majd az OK gombra kattintva zárja be a párbeszédpanelt.

    Feljegyzés

    Most hibakeresési módban van.

  10. Állítsa be a kódban használni kívánt töréspontokat.

  11. Lépjen a Services Control Managerbe, és manipulálja a szolgáltatást, és küldjön leállítási, szüneteltető és folytatási parancsokat a töréspontok eléréséhez. A Services Control Manager futtatásával kapcsolatos további információkért tekintse meg a Szolgáltatások indítása című témakört. Lásd még: Hibaelhárítás: A Windows-szolgáltatások hibakeresése.

A Windows Services Tippek hibakeresése

A szolgáltatás folyamatához való csatolással a legtöbb, de nem az összes kódot hibakereséssel végezheti el. Mivel például a szolgáltatás már elindult, nem lehet hibakeresést végezni a szolgáltatás OnStart metódusában vagy a szolgáltatás ily módon való betöltéséhez használt metódus kódjában Main . Ennek a korlátozásnak az egyik módja, ha létrehoz egy ideiglenes második szolgáltatást a szolgáltatásalkalmazásban, amely csak a hibakereséshez nyújt segítséget. Mindkét szolgáltatást telepítheti, majd elindíthatja ezt a próbaszolgáltatást a szolgáltatás folyamatának betöltéséhez. Miután az ideiglenes szolgáltatás elindította a folyamatot, a Visual Studióban a Hibakeresés menüt használhatja a szolgáltatásfolyamathoz való csatoláshoz.

Próbáljon meg hívásokat hozzáadni a metódushoz, Sleep hogy késleltethesse a műveletet, amíg nem tud csatlakozni a folyamathoz.

Próbálja meg normál konzolalkalmazásra módosítani a programot. Ehhez írja át a metódust az Main alábbiak szerint, hogy windowsos szolgáltatásként és konzolalkalmazásként is fusson az indítási módtól függően.

Útmutató: Windows-szolgáltatás futtatása konzolalkalmazásként

  1. Adjon hozzá egy metódust a szolgáltatáshoz, amely a következő metódusokat futtatja OnStartOnStop :

    internal void TestStartupAndStop(string[] args)  
    {  
        this.OnStart(args);  
        Console.ReadLine();  
        this.OnStop();  
    }  
    
  2. Írja át a metódust az Main alábbiak szerint:

    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. A projekt tulajdonságainak Alkalmazás lapján állítsa a kimenet típusát konzolalkalmazásra.

  4. Válassza a Hibakeresés indítása (F5) lehetőséget.

  5. A program windowsos szolgáltatásként való futtatásához telepítse és indítsa el a szokásos módon egy Windows-szolgáltatáshoz. Ezeket a módosításokat nem szükséges megfordítani.

Bizonyos esetekben, például ha olyan hibát szeretne hibakeresésre használni, amely csak a rendszer indításakor fordul elő, a Windows hibakeresőt kell használnia. Töltse le a Windows Illesztőprogram-készletet (WDK), és tekintse meg a Windows-szolgáltatások hibakeresését ismertető témakört.

Lásd még