Ú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
Hozza létre a szolgáltatást a hibakeresési konfigurációban.
Telepítse a szolgáltatást. További információ : How to: Install and Uninstall Services.
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.
Indítsa el a Visual Studiót rendszergazdai hitelesítő adatokkal, hogy a rendszerfolyamatokhoz csatolhassa.
(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.
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.
Jelölje be az összes felhasználó folyamatainak megjelenítése jelölőnégyzetet.
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.
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.
Állítsa be a kódban használni kívánt töréspontokat.
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
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(); }
Í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. } }
A projekt tulajdonságainak Alkalmazás lapján állítsa a kimenet típusát konzolalkalmazásra.
Válassza a Hibakeresés indítása (F5) lehetőséget.
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
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: