AGB  ·  Datenschutz  ·  Impressum  







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

Serviceanwendung treibt mich in den Wahnsinn

Ein Thema von Jelly · begonnen am 5. Dez 2005 · letzter Beitrag vom 6. Dez 2005
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#1

Serviceanwendung treibt mich in den Wahnsinn

  Alt 5. Dez 2005, 15:32
Ich habe eine Serviceanwendung, die im Grunde nichts anderes machen soll, als im stündlichen Rythmus in einer SQL Tabelle nachzuschlagen, ob irgendwelche Mails (automatisch vom Programm erzeugt) verschickt werden müssen. Sinn des Ganzen soll sein, dass Benutzer heute schon Mails versenden, und nicht mehr daran denken müssen. Reell soll die Mail aber an einem vordefiniertem Datum rausgehen.

Im Grund klappt das auch. Weil ich die Serviceanwendung jedoch unter Delphi4 nicht debuggt bekomme, weiss ich nicht so recht wie ich rangehen soll, um Programmierfehler zu finden. Ich erzeuge zur Zeit einfach ein Logbuch, in dem dann alle relevanten Schritte oder Fehler eingetragen werden... Sieht im Erfolgsfall etwa so aus:
Code:
[05.12.05 15:09:45] - Temporäres Verzeichnis gesetzt auf "C:\WINDOWS\TEMP\Brunata\"
[05.12.05 15:09:45] - Service gestartet
[05.12.05 15:09:45] - Mit SQL Server verbunden
[05.12.05 15:09:45] - Erster Durchlauf in 2 Sekunden
[05.12.05 15:09:47] - Starte periodischer Vorgang
[05.12.05 15:09:47] - 
[05.12.05 15:09:47] - Mailmodul = dmDelProp
[05.12.05 15:09:47] -     1 Liegenschaften sind betroffen
[05.12.05 15:09:47] -     0721159 wird versendet an ***@bla.de
[05.12.05 15:09:48] -         Senden OK
[05.12.05 15:09:48] -         Sendedatum setzen OK
[05.12.05 15:09:48] -     Alle Liegenschaften wurden behandelt
[05.12.05 15:09:48] - 
[05.12.05 15:09:48] - Periodischer Vorgang beendet. Nächster Vorgang um 05.12.2005 15:10:17
[05.12.05 15:09:59] - Service gestoppt
Jedoch klappt dies nicht immer, und manchmal ist der letzte Logbucheintrag
Code:
0721159 wird versendet an ***@bla.de
Dieser Eintrag wird geschrieben vor dem eigentlich Mailversand über die Indy Komponenten.
Im Erfolgsfalls soll anschliessend ein
Code:
Senden OK
kommen, ansonsten ein
Code:
Senden ERROR
Jedoch es kommt gar kein Eintrag, und die Serviceanwendung scheint zu hängen. Das Ulkige ist jedoch, DASS DIE MAIL ANKOMMT!!

Noch skuriler... In einigen Fällen wird das Logbuch korrekt erstellt. Ich seh keinen Zusammenhang.

Leider ist es jetzt schwer hier Code zu posten, und den genau zu erklären, da relativ viel dahinter steckt. Aber vielleicht sind ja solche Probleme allgemein bekannt bei Serviceanwendungen. Am eigentlichen Mailmodul kanns eigentlich nicht hängen da dasselbe in normalen Applikationen bislang tadellos funktionniert.

Naja, hier mal trotzdem der Code

Delphi-Quellcode:
with qryBetroffeneLiegenschaften do begin
    try
      open ;
    except
      Log.Add (1,'*** E R R O R *** View vwInformHurthOnDeletedProperties konnte nicht geöffnet werden') ;
      exit ;
    end ;

    if Active then begin // Active prüft lediglich, ob die Datenbankverbindung noch steht
       Log.Add (1,Format ('%d Liegenschaften sind betroffen',[AnzahlLiegenschaften])) ;
       while not EOF do begin
          LiegenschaftAusserBetrieb.Prepare (FieldByName('ID').AsInteger) ;
          LiegenschaftAusserBetrieb.RelatedFields.Prop := FieldByName('ID').AsInteger ;
          ToAddress := LiegenschaftAusserBetrieb.CommonValue('SB_Hurth_EMail') ;
          Log.Add (1,format(
             '%s wird versendet an %s',
             [FieldByName('Nr').AsString,
              ToAddress]
          )) ;
          if LiegenschaftAusserBetrieb.Execute (ToAddress,-1) then begin // Die eigentliche Senderoutine
             Log.Add (2,'Senden OK') ;
             qrySetSentDatum.ParamByName('ID').AsInteger := FieldByName('ID').AsInteger ;
             qrySetSentDatum.ParamByName('Datum').AsDatetime := now ;
             try
                qrySetSentDatum.ExecSQL ;
                Log.Add (2,'Sendedatum setzen OK') ;
             except
                Log.Add (2,'Sendedatum setzen *** E R R O R ***') ;
             end ;
          end else begin
             Log.Add (2,'Senden *** E R R O R ***') ;
          end ;
          next ;
       end ;
       Log.Add (1,'Alle Liegenschaften wurden behandelt') ;
    end ;

    close ;
 end ;
Also meine eigentliche Frage wäre wohl, wie ich eine Serviceanwendung debuggen kann unter Delphi 4. Oder genauso helfen würde mir, wenn mir einer diese abstruse Verhalten erklären könnte.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 5. Dez 2005, 15:53
Moin Jelly,

...in der Delphi IDE im Menü...Run -> Parameters
...unter Host-Application den Pfad zur Service-EXE
...und unter Parameters /Debug eingeben


..sollte so gehen


Gruß
Tyrael
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 5. Dez 2005, 15:53
Vielleicht den Service mal in eine normale Anwendung umschreiben, dann debuggen und wieder als Service definieren.

Florian
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 5. Dez 2005, 16:05
Zitat von Florian Bernd:
Vielleicht den Service mal in eine normale Anwendung umschreiben, dann debuggen und wieder als Service definieren.

Florian
Das ist nicht notwendig...
einfach unter Parameters /Debug eingeben, dann kann man auch einen Service debuggen
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 5. Dez 2005, 16:09
Moyen,

Zitat von Jelly:
if LiegenschaftAusserBetrieb.Execute (ToAddress,-1) then begin // Die eigentliche Senderoutine Jedoch es kommt gar kein Eintrag, und die Serviceanwendung scheint zu hängen. Das Ulkige ist jedoch, DASS DIE MAIL ANKOMMT!!
Das deutet doch darauf hin, dass der Fehler sich in der Methode Execute befindet - und zwar nach dem Senden der Mail. Wie baust Du die Mail selber auf? Vielleicht gibst Du irgendetwas nicht mehr frei (stringpointer o.ä.), oder einer der berühmten Indy-Timeout-Exceptions werden ausgelöst.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 5. Dez 2005, 16:09
Zitat von Tyrael Y.:
...in der Delphi IDE im Menü...Run -> Parameters
...unter Host-Application den Pfad zur Service-EXE
...und unter Parameters /Debug eingeben
Nee, leider nicht.

Zitat:
Vielleicht den Service mal in eine normale Anwendung umschreiben, dann debuggen und wieder als Service definieren.
Das wäre aber für den weiteren Verlauf ziemlich unpraktisch. Ich kann doch nicht jedesmal meine ganze Anwendung umkrempeln, nur um einen Fehler zu suchen.

Ich habe mittlerweilen den Verdacht, dass es an der BDE liegt. Ich muss da mal noch bischen testen, dann kann ich hoffentlich mehr dazu sagen. Wie es scheint, taucht der Fehler nur dann auf, wenn ich während der Service läuft, ich in einer anderen Anwendung eine bestimmte DB Tabelle geöffnet habe. Wenn dem so sei, wär es für mich nicht allzu tragisch, weil der Service nachher eh auf dem Firmenserver laufen wird.

Deshalb mal noch ne Frage hier: Kann es sein dass die BDE Probleme macht, wenn 2 User (also der angemeldete und das Systemkonto) auf eine Datenbank zugreifen?
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 5. Dez 2005, 16:13
Zitat von Jelly:
Zitat von Tyrael Y.:
...in der Delphi IDE im Menü...Run -> Parameters
...unter Host-Application den Pfad zur Service-EXE
...und unter Parameters /Debug eingeben
Nee, leider nicht.
Ich arbeite selbst mit Servicen und debugge diese auf diese Art...
gibt es den Punkt in D4 nicht oder was läuft dann nicht?
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 5. Dez 2005, 16:15
Zitat von Union:
Das deutet doch darauf hin, dass der Fehler sich in der Methode Execute befindet - und zwar nach dem Senden der Mail.
Ja, das sehe ich auch so. Aber wieso klappt mal, und mal nicht. Noch eine weitere Bemerkung: Befinden sich mehr als nur eine Mail in der Queue, so werden diese bislang immer anstandlos alle korrekt versandt.

Ich muss diesen Service irgendwie debuggen können. Gibts denn da noch Möglichkeiten.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 5. Dez 2005, 16:18
Zitat von Jelly:
Ich muss diesen Service irgendwie debuggen können. Gibts denn da noch Möglichkeiten.
Hast Du denn schon die anderen Vorschläge hier ausprobiert oder funktioniert das mit Delphi4 nicht?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#10

Re: Serviceanwendung treibt mich in den Wahnsinn

  Alt 5. Dez 2005, 16:18
Zitat von Tyrael Y.:
Ich arbeite selbst mit Servicen und debugge diese auf diese Art...
gibt es den Punkt in D4 nicht oder was läuft dann nicht?
Doch, aber nach dem Start in der IDE beendet sich der Service gleich wieder.
Was es in Delphi 4 nicht gibt, ist Start->Mit Prozess verbinden...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 10:02 Uhr.
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