Entwickler-Ecke

Programmierwerkzeuge - Dienst debuggen


Stefan.Buchholtz - Fr 03.02.06 18:11
Titel: Dienst debuggen
Wie debugge ich eine Dienstanwendung?
Ich bekomme meinen Dienst aus der Systemsteuerung gestartet und möchte den Debugger (mit Start->Mit Prozess verbinden) darauf ansetzen, aber in der Prozessliste taucht der Dienst überhaupt nicht auf. Im Taskmanager ist er zu sehen, er schreibt auch brav in sein Logfile - laufen tut er also. Es ist dabei egal, ob der Dienst unter LocalSystem oder meinem Account läuft.
Ich vermute ein Rechteproblem - ich bin als Hauptbenutzer angemeldet, Administratorrechte kriege ich auch nicht so ohne weiteres.
Als Alternative steht in der Delphi-Hilfe, dass man für den Dienst in der Registry unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options einen Schlüssel anlegen soll, in dem man Delphi als Debugger für den Dienst einträgt. Seitdem ich das gemacht habe, startet Delphi immer wenn ich den Dienst starte, liefert dann aber eine Fehlermeldung "Fehler beim Laden der Typbibliothek <Dienstanwendung.exe>". Der Start des Dienstes schlägt dann mit Fehler 1053 (Timeout) fehl.
Woran kann es liegen und wie kriege ich das hin?

Ich benutze hier Delphi 7 Enterprise unter Windows 200 Professions SP 4

Stefan


afk - Fr 03.02.06 22:51

Um Delphi mit einem unter dem Systemaccount laufenden Dienste-Prozess zu verbinden, muß im Fenster "Start->Mit Prozess verbinden" die Option "Systemprozesse anzeigen" aktivieren.

Colin Wilson hat eine Unit geschrieben, mit der man wahlweise einen Dienst auch direkt aus der IDE starten kann (läuft dann wie einen normaler Prozess), um in dann vom Anfang bis zum Ende debuggen zu können. Die befindet sich auf seine Website [http://www.wilsonc.demon.co.uk/delphi_7.htm] in den "NT Low Level Utilities".

Ein Artikel von ihm, der beschreibt wie man die Unit verwendet, ist im Google [http://groups.google.de/group/borland.public.delphi.nativeapi.win32/browse_thread/thread/c2928189fd093193/13df743b00f57603?lnk=st&q=tdebugserviceapplication&rnum=2&hl=de#13df743b00f57603] zu finden.

Gruß Axel


Stefan.Buchholtz - Mo 06.02.06 10:20

user profile iconafk hat folgendes geschrieben:
Um Delphi mit einem unter dem Systemaccount laufenden Dienste-Prozess zu verbinden, muß im Fenster "Start->Mit Prozess verbinden" die Option "Systemprozesse anzeigen" aktivieren.

Colin Wilson hat eine Unit geschrieben, mit der man wahlweise einen Dienst auch direkt aus der IDE starten kann (läuft dann wie einen normaler Prozess), um in dann vom Anfang bis zum Ende debuggen zu können. Die befindet sich auf seine Website [http://www.wilsonc.demon.co.uk/delphi_7.htm] in den "NT Low Level Utilities".

Ein Artikel von ihm, der beschreibt wie man die Unit verwendet, ist im Google [http://groups.google.de/group/borland.public.delphi.nativeapi.win32/browse_thread/thread/c2928189fd093193/13df743b00f57603?lnk=st&q=tdebugserviceapplication&rnum=2&hl=de#13df743b00f57603] zu finden.


Mit "Systemprozesse anzeigen" funktioniert es auch nicht, auf die Idee war ich schon selbst gekommen.

Ich schau mir die Unit mal an...


digi_c - Mo 06.02.06 14:23

Das musste ich vor kurzem auch machen, war echt übel sich jedes mal an den Prozess zu hängen. Hinzu kam das dieser auch noch eine selbstgeschriebene DLL hatte...