Laden...

VS 2010 - Windows Dienst - Debug Problem

Erstellt von mipa_acc vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.583 Views
M
mipa_acc Themenstarter:in
318 Beiträge seit 2006
vor 13 Jahren
VS 2010 - Windows Dienst - Debug Problem

Hallo,

ich hänge gerade an einem etwas merkwürdigem Problem was ich leider nicht nachvollziehen kann...

Als erstes muss ich euch sagen, dass es das erste mal ist, dass ich einen Windows Dienst mit Vistual Studio 2010 programmiere. Habe das bisher immer mit dem 2008er Studio gemacht.

Visual Studio habe ich mit Administratorrechten geöffnet.

Anschließend habe ich ein neues Projekt (WindowsService) erstellt.

In meiner Service1.cs lasse ich mir beim Starten des Dienstes nach einem Sleep von 10 Sekunden in mein TEMP Verzeichnis eine Datei erstellen (ist ja nur ein Testprojekt).

Nun klicke ich im Designer meiner Service1.cs Datei mit der Rechten Maustaste und füge einen Installer hinzu.

Ich kompilliere mein Projekt und installiere den Dienst mit der VS Eingabeaufforderung (mit Adminrechten gestartet). Dies mache ich indem ich das installutil verwende.

Nun sehe ich den Dienst in der Windows MMC. Wenn ich den Dienst Starte wird auch meine Datei angelegt.

Zu meinem Problem komme ich wenn ich Debuggen will -> Ich starte den Dienst. Nun setzte ich meinen Breakpoint und gehe unter dem Registerreiter "Debug" auf "Attach to process". Jetzt kann ich mich auf alle Dienste drauf schalten außer auf meinen Testdienst. Dieser ist nämlich ausgegraut.

Leider habe ich überhaupt keinen Plan warum das so ist. Könnt Ihr mir da helfen?

Vielen Dank im Voraus.

Gruß
mipa_acc

29 Beiträge seit 2009
vor 13 Jahren

Der ausgegraute Dienst ist nicht der den du gern Debuggen würdest sondern die "precompilierte" Version, die das VS2010 vorhält um dich bei der Entwicklung zu unterstützen.

Wenn du den Dienst debuggen willst, dann musst du wie folgt vorgehen:

  1. Starte VS 2010 mit dem Dienstprojekt
  2. Setze die Haltepunkte, die du benötigst
  3. Starte den Dienst (über die Dienststeuerung, nicht über's VS)
  4. Benutze "Attach to Process" / "An den Prozess anhängen" wie von dir beschrieben

Nun müsste in der Liste der Prozesse zum Debugen dein Dienst drin stehen.. zweimal! Einmal ausgegraut und einmal nicht ausgegraut. Den nicht ausgegrauten nimmst du einfach und schon kannst du debuggen.

Problem dabei ist, dass du ggf. schnell sein musst, wenn du an den Dienst anhängen willst, da dieser erst laufen muss und du dich dann anhängen kannst.

Ggf. machst du direkt beim Start des Dienstes ein Thread.Sleep(20000) oder so... dann hast du genug Zeit..

Gruß dev

C
252 Beiträge seit 2007
vor 13 Jahren

Ich mache das eigentlich immer folgendermaßen: Debugging Windows Services
Geht einfach und bequem.

29 Beiträge seit 2009
vor 13 Jahren

Ich mache das eigentlich immer folgendermaßen: Debugging Windows Services
Geht einfach und bequem.

Hat aber natürlich den Nachteil, dass ich nicht genau die gleichen Bedingungen habe wie beim Einsatz als vollwertigen Dienst. z.B. können die Rechte für den Dienst andere sein als für die normale Anwendung.

Oder hab ich das falsch verstanden?

Gruß dev

M
mipa_acc Themenstarter:in
318 Beiträge seit 2006
vor 13 Jahren

Vielen Dank für eure Antworten!

Hatt zusätzlich vergessen, alle Prozesse aller Benutzer und in allen Sitzungen anzuzeigen.

Gruß