Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TService debuggen (https://www.delphipraxis.net/103224-tservice-debuggen.html)

FrankBrin 12. Nov 2007 15:57


TService debuggen
 
Hallole,
hab da mal ne prinzipielle Frage zu Diensten und deren Fehlersuche.

Ich habe um Erfahrungen zu sammeln erst einmal einen minimalistischen Service geschrieben.

Dieser Service ist genau so aufgebaut, wie es überall beschrieben wird. Jedoch habe ich irgendwo einen Fehler.

So und jetz die Frage: Wie debugge ich einen Service?
Den Hinweis "Mit Prozess verbinden" habe ich schon gefunden, aber mit was für einem Prozess?

Kann mir jemand die ganze Geschichte verraten. Was passiert beim Prozess verbinden?

Fragen nix als Fragen!

Wer kann helfen?

Gruss
Frank :wiejetzt:

shmia 12. Nov 2007 17:15

Re: TService debuggen
 
Du kannst in deinem Service die procedure OutputDebugString() verwenden und mit dem Programm
DebugView auffangen.

FrankBrin 13. Nov 2007 06:23

Re: TService debuggen
 
Hallo, soll das heißen, man kann einen Service nicht mit dem normalen Debugger durchforsten?

Das glaub ich nicht so ganz!

Gruß
Frank

Bernhard Geyer 13. Nov 2007 06:31

Re: TService debuggen
 
Zitat:

Zitat von FrankBrin
So und jetz die Frage: Wie debugge ich einen Service?
Den Hinweis "Mit Prozess verbinden" habe ich schon gefunden, aber mit was für einem Prozess?

Na mit deinem Prozess. :) Evtl. noch den Haken "Alle Prozesse Anzeigen" anwählen da dein Prozess unter dem Dienstekonto läuft und sonst nicht sichtbar ist.

Zitat:

Zitat von FrankBrin
Kann mir jemand die ganze Geschichte verraten. Was passiert beim Prozess verbinden?

Das gleiche wie beim normalen Debugging auch. Jedoch wird der entsprechende Debug-Hook nicht beim Prozessstart gesetzt sondern erst später.

FrankBrin 13. Nov 2007 06:42

Re: TService debuggen
 
Hallo Bernhard,
ja genau das ist der Grund meiner Frage. Unter "Mit Prozess verbinden" erscheint mein Service nicht (Häkchen sind alle gesetzt).
Muß der Service vorher installiert sein?
...
Was mir gerade auffällt: Muß die EXE auf dem lokalen Rechner liegen? Die liegt bei mir nämlich auf einem Serverlaufwerk.

mkinzler 13. Nov 2007 06:43

Re: TService debuggen
 
Man kann sich nur mit Prozessen verbinden, welche monentan laufen. der Speicherort ist egal.

Bernhard Geyer 13. Nov 2007 07:40

Re: TService debuggen
 
Zitat:

Zitat von FrankBrin
Hallo Bernhard,
ja genau das ist der Grund meiner Frage. Unter "Mit Prozess verbinden" erscheint mein Service nicht (Häkchen sind alle gesetzt).
Muß der Service vorher installiert sein?

Schon. Wie soll er denn sonst als Dienst laufen?

Zitat:

Zitat von FrankBrin
Was mir gerade auffällt: Muß die EXE auf dem lokalen Rechner liegen? Die liegt bei mir nämlich auf einem Serverlaufwerk.

Läuft der Dienst wohl auf einem anderen Rechner oder liegt die Datei auf einem Serverlaufwerk? Das erste läst sich mit dem Remote Debugger lösen, das zweite ist ein No-Go. Die Exe eines Dienstes muss auf einem lokalen Rechnerlaufwerk liegen ansonsten wird die Sicherheitsverwaltung von Windows dir gehörig in die Suppe spucken (Dienst nicht startbar, da Netzwerklaufwerke niemals die nötige Vertrauensstellung erreichen können wie ein lokales Laufwerk)

ralfiii 13. Nov 2007 09:47

Re: TService debuggen
 
Zitat:

Zitat von mkinzler
Man kann sich nur mit Prozessen verbinden, welche monentan laufen. der Speicherort ist egal.

Ich vermute mal unter Vista wird das nicht mehr funktionieren wenn die UAC eingeschalten ist.
(weil Prozesse mit unterschiedlicher Berechtigung nicht mehr miteinander "können".

In dem Fall wird man die UAC abdrehen müssen.

OregonGhost 13. Nov 2007 11:53

Re: TService debuggen
 
Man kann auch mit aktivierter UAC problemlos Dienste debuggen. Zumindest mit Visual Studio 2005 (das ja ohnehin mit Admin-Rechten laufen muss) geht das wunderbar. Was du meinst, ist, dass ein Prozess nicht mehr ohne weiteres mit einem Prozess mit höheren Rechten kommunizieren kann.

Edit: Du kannst einen Dienst davon abgesehen auch so programmieren, dass man ihn als normale Anwendung starten und debuggen kann. Solange es um die normale Laufzeitfunktionalität geht (also nicht um dienstspezifische Dinge oder das Dienstaufstartverhalten), ist das auch ein gangbarer Weg.

mkinzler 13. Nov 2007 12:01

Re: TService debuggen
 
die IDE muss unter vista ja auch als administrator gestartet werden, sonst funktioniert sie imho nicht richtig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz