AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Service startet nicht

Ein Thema von himitsu · begonnen am 16. Jun 2011 · letzter Beitrag vom 20. Jun 2012
Antwort Antwort
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.536 Beiträge
 
Delphi 12 Athens
 
#1

AW: Service startet nicht

  Alt 16. Jun 2011, 11:26
Zitat:
Delphi IDE -> Menü Run -> Parameters -> Host application: "net", Parameters: "start MeinServiceName" (jeweils ohne die Anführungszeichen).
Über NET START im Debugger gestartet funktioniert nicht.

Application.Run; beendet sich dann immer sofort und startet erst garnicht.
Das passierte auch schon, als ich damals versuchte den Prozess (die Service.exe) direkt im Delphi zu debuggen.

Irgendwie erkennt TService anscheinend, daß es nicht als "Dienst" im SYSTEM-Konto läuft und startet dann garnicht erst.

Aus diesem Grund hatte ich damals sowas gemacht, um es Debuggen zu können.
Delphi-Quellcode:
procedure TProdatSRVXEService.ServiceCreate(Sender: TObject);
var
  Started: Boolean;
  Temp: TForm;
begin
  LogEvent('DataServer-Create');
  LoadConfiguration;

  if Trim(SvcMgr.Application.Title) = 'then
    SvcMgr.Application.Title := ExtractFileName(Forms.Application.ExeName);
  if IsDebuggerPresent or FindCmdLineSwitch('DEBUG') then begin
    Forms.Application.MainFormOnTaskBar := False; // geht leider doch nicht ohne Form
    Forms.Application.CreateForm(TForm, Temp); // Form zum Beenden und für Eintrag in Taskbar
    Temp.Caption := 'Debug-Mode: ' + SvcMgr.Application.Title;
    Temp.OnCloseQuery := DebugServiceClose;
    Temp.Visible := True;
    { SvcMgr.Application.Run; }
    {}if FindCmdLineSwitch('INSTALL', ['-', '/'], True) then
    {}  TServiceApplicationHack(Application).RegisterServices(True, FindCmdLineSwitch('SILENT', ['-', '/'], True))
    {}else if FindCmdLineSwitch('UNINSTALL', ['-', '/'], True) then
    {}  TServiceApplicationHack(Application).RegisterServices(False, FindCmdLineSwitch('SILENT', ['-', '/'], True))
    {}else begin
    {}  Started := True;
    {}  ServiceStart(Self, Started);
    {}  if Started then
    {}    while not (Terminated or StopService) do begin
    {}      Forms.Application.ProcessMessages;
    {}      Sleep(20);
    {}    end;
    {}  Forms.Application.Terminate;
    {}end;
  end;
end;

procedure TProdatSRVXEService.DebugServiceClose(Sender: TObject; var CanClose: Boolean);
begin
  StopService := True;
end;
Diese "Hack" läuft, wobei Application.Ran umgangen wird, welches ja erzeit nicht geht und beim Debuggen auch nie funktionierte.
Allerdings läuft er so als Anwendung und nicht als Dienst.

PS: Diesen Codeteil hatte ich gerade natürlich auskommentiert.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Jun 2011 um 11:29 Uhr)
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Service startet nicht

  Alt 16. Jun 2011, 11:35
Über NET START im Debugger gestartet funktioniert nicht.
Hmmm... liegt das Kompilat denn auf einem lokalen Laufwerk? Also nicht im Netz oder einem gesubsteten Laufwerk?

Bei mir funktioniert es nämlich (mit Delphi XE) sehr zuverlässig, habe damit gerade in den letzten 8 Wochen etliches debugged. Erinnere mich grob daran, daß der Service natürlich schon installiert sein muss, und der ImagePath stimmen muss (ich habe für Debug und Release getrennte Pfade, d.h. ein installiertes Release würde Debug "unmöglich" machen - dann springt er halt auch mit F7 gar nicht erst in den Code). Das sind meine zwei Hauptfehler beim Testen gewesen.

Irgendwie erkennt TService anscheinend, daß es nicht als "Dienst" im SYSTEM-Konto läuft und startet dann garnicht erst.
Aber damit TService etwas tun kann, muss der Code ja schon ausgeführt werden. Dann hilft es eventuell, halt direkt mit F7 statt Breakpoints ins Debuggen zu starten und ganz von Anfang durchzusteppen.

Allerdings kann ich wie gesagt meine Services, die mit ObjectName=LocalSystem sowohl in Delphi konfiguriert als auch im System eingetragen sind, zu debuggen.

Wie das mit Delphi 2010 ist, weiß ich leider nicht, nur daß es unter Delphi 2006 (hatte ich davor) nicht so einfach klappte.

Jetzt mit IDA Pro (oder einem anderen Debugger Deiner Wahl) auch noch das "net" zu debuggen, um zu sehen, ob und wie er in Dein Kompilat springt, wäre vermutlich etwas übertrieben, würde mir sonst nur als letzte Lösung einfallen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.536 Beiträge
 
Delphi 12 Athens
 
#3

AW: Service startet nicht

  Alt 16. Jun 2011, 11:47
EXE direkt im Debugger gestartet liegt auf einem SUBST-Laufwerk.
Der installierte Service aber auf einer normalen Partition.

Also starten tut es erstmal, aber .Run beendet sich eben immer gleich wieder.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Service startet nicht

  Alt 16. Jun 2011, 11:48
Und wenn du die Exe mal testweise auf ein lokales Laufwerk packst?
Markus Kinzler
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Service startet nicht

  Alt 16. Jun 2011, 11:54
Wenn Du schreibst, daß .Run sich eben immer gleich wieder beendet, heißt das also, daß Du in den Debugger kommst? Links hast Du blaue Punkte neben den Codezeilen und irgendwo stehst Du an einem Breakpoint in Deinem Code?

Dann kompilier im Zweifel mit Debug-DCUs (im die RTL mitdebuggen zu können), und wenn er aus .Run sofort wieder rausspringt, stepst Du halt mit F7 rein, und hast außerdem Breakpoints auf allen Deinen Events im TService.
  Mit Zitat antworten Zitat
Benutzerbild von Daniela.S
Daniela.S

Registriert seit: 1. Mär 2008
Ort: Niederösterreich
226 Beiträge
 
Delphi XE4 Enterprise
 
#6

AW: Service startet nicht

  Alt 16. Jun 2011, 11:54
Vielleicht kannst mit MadExcept mehr herausfinden?
Map Datei mit allen Debug Infos dazu und Code Info erhöhen...

Debuggen geht dann zwar nicht, aber sollte helfen zu sehen wo er genau hängt


Tante Edit, Link http://madshi.net/
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.536 Beiträge
 
Delphi 12 Athens
 
#7

AW: Service startet nicht

  Alt 16. Jun 2011, 12:08
Als Service und auch beim Debuggen (über dieses NET START) liegt alles auf einem lokalen Laufwerk.
Außer die Quellcodes, aber die findet Delphi ja.

zu MadExcept EurekaLog und Co:
Wie gesagt, es stürtz nichts ab, es gibt keine Exceptions ... es bleibt ganz einfach hängen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Service startet nicht

  Alt 16. Jun 2011, 12:12
Aber halt auf einem gemappten Laufwerk.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Daniela.S
Daniela.S

Registriert seit: 1. Mär 2008
Ort: Niederösterreich
226 Beiträge
 
Delphi XE4 Enterprise
 
#9

AW: Service startet nicht

  Alt 16. Jun 2011, 12:27
Bei MadExcept gibt es die Einstellung "check for frozen main thread -> freeze timeout (sec)"

Einen Versuch wäre es wert...
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Service startet nicht

  Alt 16. Jun 2011, 12:46
Wie gesagt, es stürtz nichts ab, es gibt keine Exceptions ... es bleibt ganz einfach hängen.
Dafür gibt es meist nur einen Gründ
a) Irgendeine Datei oder was auch immer ist nicht vorhanden und er sucht und sucht......
b) Eine Benutzereingabe wird erwartet, aber wenn der Benutzer nichts sieht.............
c) Endlosschleife.

Und wenn's auf anderen Maschinen läuft, wo sind die Unterschiede?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz