Fehlermeldungen abfangen
Fehlermeldungen abfangen
Hi,
gibt es für FreePascal/Lazarus eine art madExcept wie es das für Delphi gibt?
Hintergrund ist: Ich habe einen Daemon laufen der an einem Port horcht. Das programm läuft mal 3 tage durch, mal 5 tage. Irgendwann beim Connecten macht es den Thread zu und ich weiss nicht warum. Problem an der sache ist, ich kann die fehler nicht reproduzieren.
Oder gibt es eine andere möglichkeit z.b. einen Stackoverflow, I/O Fehler oder sonstiges abzufangen und ins syslog zu schreiben?
Danke im voraus
gibt es für FreePascal/Lazarus eine art madExcept wie es das für Delphi gibt?
Hintergrund ist: Ich habe einen Daemon laufen der an einem Port horcht. Das programm läuft mal 3 tage durch, mal 5 tage. Irgendwann beim Connecten macht es den Thread zu und ich weiss nicht warum. Problem an der sache ist, ich kann die fehler nicht reproduzieren.
Oder gibt es eine andere möglichkeit z.b. einen Stackoverflow, I/O Fehler oder sonstiges abzufangen und ins syslog zu schreiben?
Danke im voraus
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Fehlermeldungen abfangen
Mit try ... except kannst Du den Fehler nicht abfangen?
Re: Fehlermeldungen abfangen
Das wiess ich. Ich dachte es gibt was "globales". Also das ich nicht überall das try einbauen muss. Wenn man es mit Debuginfos erstellt, sagt er ja wo es klemmt. Diese meldung möchte ich gerne abfangen.
-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: Fehlermeldungen abfangen
TApplication hat einen Exception-Handler. lmgtfy:
http://docs.embarcadero.com/products/ra ... ption.html" onclick="window.open(this.href);return false;
http://lazarus-ccr.sourceforge.net/docs ... ption.html" onclick="window.open(this.href);return false;
http://docs.embarcadero.com/products/ra ... ption.html" onclick="window.open(this.href);return false;
http://lazarus-ccr.sourceforge.net/docs ... ption.html" onclick="window.open(this.href);return false;
Re: Fehlermeldungen abfangen
Erstmal danke. Aber das ist leider keine TApplication. Das ist ein "normales" konsolen programm. OB ich das "sauber" umschreiben kann weiss ich nicht. Da es eigentlich ein Daemon ist. Obwhol, wenn ich mir das so überlege sollte es gehen.
Wenn trotzdem noch einer ne idee hat, immer her damit
Wenn trotzdem noch einer ne idee hat, immer her damit

-
- Beiträge: 768
- Registriert: Mo 4. Mai 2009, 13:24
- OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
- CPU-Target: x86_64-linux-qt/gtk2
- Kontaktdaten:
Re: Fehlermeldungen abfangen
Dann lass doch den Thread in einem try/except-Block arbeiten und logge im Exception-Handler (z.B. über TEventlog, unit eventlog).
Vielleicht hilft es ja auch, wenn du das Programm mal nicht dämonisiert laufen lässt. Dann wird die Fehlermeldung im Terminal ausgegeben.
Vielleicht hilft es ja auch, wenn du das Programm mal nicht dämonisiert laufen lässt. Dann wird die Fehlermeldung im Terminal ausgegeben.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Fehlermeldungen abfangen
Gibt es nicht auch in der Unit SysUtils einen globalen Exception-Handler, der aufgerufen wird, wenn im Hauptprogramm eine Exception nicht abgefangen wird?Scotty hat geschrieben:Dann lass doch den Thread in einem try/except-Block arbeiten und logge im Exception-Handler (z.B. über TEventlog, unit eventlog).
Vielleicht hilft es ja auch, wenn du das Programm mal nicht dämonisiert laufen lässt. Dann wird die Fehlermeldung im Terminal ausgegeben.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Fehlermeldungen abfangen
Genau sowas meine ich. Ich werd mal googln. Nun habe ich wenigstens suchbegriffe. Danke...Socke hat geschrieben:Gibt es nicht auch in der Unit SysUtils einen globalen Exception-Handler, der aufgerufen wird, wenn im Hauptprogramm eine Exception nicht abgefangen wird?
EDIT: http://wiki.lazarus.freepascal.org/Logging_exceptions" onclick="window.open(this.href);return false;