Debugga Windowstjänst
Förord
Ibland kan det vara nödvändigt att debugga en Windowstjänst, vilket alltid inte är så lätt. Denna artikel förklarar kort hur du kan göra. Artiklen har en relation till tidigare artikel som tar upp OnCustomCommand: (http://www.pellesoft.se/area/articles/article.aspx?artid=979) - En standard metod för en tjänst i Visual Studio.Innehåll
»»
»
Om du har en windowstjänst eller flera som körs kan du behöva debugga denna kod vilket alltid inte är så lätt. Har du någon gång fått följande fel:
"The breakpoint will not currently be hit. No symbols have been loaded for this document."
Du kan få detta fel om du sätter en breakpoint i din tjänstkod vilket kan ge en del bekymmer.
Min lösning till detta problem är att attacha min tjänst i Visual Studio till min Windows tjänst som är installerad och startad. Detta gör du genom att gå upp i Debug menyn och väljer Attach to process. I listan bör du hitta din tjänst.
Gör du detta startar debuggen och väntar tills tjänsten körs. Har du något schema på din tjänst kan det vara lämpligt att skapa en applikation på sidan av som startar din tjänst när du vill (inte efter ditt schema). Detta kan du läsa mer om på en tidigare artikel som jag skrivit: (http://www.pellesoft.se/area/articles/article.aspx?artid=979).
Med hjälp av denna metod, OnCustomCommand kan du starta metoder i din tjänst. På detta vis kan du nå dina breakpoints.
1. Skapa en applikation som kör ExecuteCommand, vilket anropar OnCustomCommand.
2. Se till att ha implementerat OnCustomCommand i din tjänst och se även till att den anropar den metod som du vill debugga.
3. Kör attach to process på din tjänst i Visual Studio och kör sedan din applikation. Din tjänst ligger och väntar på att den ska starta, vilket du enkelt gör med din applikation.
Ett fel som kan dyka upp här är att vid installation av din Windowstjänst (om du kör ett setup projekt) försvinner debug mode. Detta gör att attach to process går lite galet. Ett tips då är att köra rebuild på ditt projekt och ersätta dll och exe filerna. På detta vis får du dom i debug mode!
Några frågor, problem eller tillägg uppskattas! Förbättringar eller helt andra lösningar är också kul att se!
Glöm inte att kika i min blogg:
http://magnusflisberg.blogspot.com/
/Magnus Flisberg
Du kan få detta fel om du sätter en breakpoint i din tjänstkod vilket kan ge en del bekymmer.
Lösning
Min lösning till detta problem är att attacha min tjänst i Visual Studio till min Windows tjänst som är installerad och startad. Detta gör du genom att gå upp i Debug menyn och väljer Attach to process. I listan bör du hitta din tjänst. Gör du detta startar debuggen och väntar tills tjänsten körs. Har du något schema på din tjänst kan det vara lämpligt att skapa en applikation på sidan av som startar din tjänst när du vill (inte efter ditt schema). Detta kan du läsa mer om på en tidigare artikel som jag skrivit: (http://www.pellesoft.se/area/articles/article.aspx?artid=979).
Med hjälp av denna metod, OnCustomCommand kan du starta metoder i din tjänst. På detta vis kan du nå dina breakpoints.
Steg för steg fungerar det så här:
1. Skapa en applikation som kör ExecuteCommand, vilket anropar OnCustomCommand.
2. Se till att ha implementerat OnCustomCommand i din tjänst och se även till att den anropar den metod som du vill debugga.
3. Kör attach to process på din tjänst i Visual Studio och kör sedan din applikation. Din tjänst ligger och väntar på att den ska starta, vilket du enkelt gör med din applikation.
Ett fel som kan dyka upp här är att vid installation av din Windowstjänst (om du kör ett setup projekt) försvinner debug mode. Detta gör att attach to process går lite galet. Ett tips då är att köra rebuild på ditt projekt och ersätta dll och exe filerna. På detta vis får du dom i debug mode!
Avslut
Några frågor, problem eller tillägg uppskattas! Förbättringar eller helt andra lösningar är också kul att se!
Glöm inte att kika i min blogg:
http://magnusflisberg.blogspot.com/
/Magnus Flisberg
Mathias Olsson
Råkade snubbla över artikeln och insåg att jag har haft problemet tidigare. Jag ögnade igenom artikeln och kommer att komma tillbaka till den nästa gång jag behöver debugga en windowstjänst.