Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Fehler nachdem die Software beendet wird (https://www.delphipraxis.net/169824-fehler-nachdem-die-software-beendet-wird.html)

erich.wanker 14. Aug 2012 12:42

Fehler nachdem die Software beendet wird
 
Hallo Leute,
einen schönen Gruß aus dem sonnigen Salzburger Land.

Frage:
Wie kann ich den folgenden Fehler finden oder zumindest eingrenzen, wo der Fehler sein könnte?

Fehler:
Ich hab ein Problem beim Schließen meiner Anwendung. Ab und zu kommt es vor dass ein ApplicationError "Exception EAccessViolation in Modul "Programmname.exe"" aufpoppt und ich finde den Fehler einfach nicht. Wann der Fehler auftritt ist nicht klar definierbar - kommt rein Zufällig daher - aber immer erst NACH dem schließen der Software.

Fehler kommt sporadisch
Fehler kommt bei WinXP bis Win7 gleichermassen selten - aber kommt.
Wenn die Software über die DelphiIDE gestartet wird und eine Fehlermeldung kommt (wenn Programm beendet wird) - ist Delphi bereits "fertig" und zeigt mir keine Quelltextposition, wo der Fehler sein könnte

Die Software verwendet:
Fenster - werden m.M.n. alle free gesetzt
DLL - werden alle via CloseLibrary entladen
Firebird SQL - Zeos 6.6.6 Connection closed
Timer: werden alle bei OnCloseQuery des Maiforms disabled
Reportdesigner wüsst ich nicht was da sein könnte
einen Schriftfont: Calibri wird beim Programmstart geladen ...

Wie könnte ich diesen Fehler eingrenzen?

Vielen Dank für Hinweise
Erich

s.h.a.r.k 14. Aug 2012 12:47

AW: Fehler nachdem die Software beendet wird
 
Es wird wohl irgendwas vorher freigegeben, bevor es nochmals verwendet wird. Aber wo genau, das wird schwer dir zu sagen.

Verwendest du Threads beim Herunterfahren? Oder rufst du nur bedingt Free() auf? also so:
Delphi-Quellcode:
procedure TMyClass.Destroy();
begin
if ... then
 ObjectXYZ.Free();
end;

erich.wanker 14. Aug 2012 13:00

AW: Fehler nachdem die Software beendet wird
 
Ich rufe "Free" auf. Wenn da ein grundlegender Fehler wäre, würde der aber immer kommen .. und nicht sporadisch.

s.h.a.r.k 14. Aug 2012 13:11

AW: Fehler nachdem die Software beendet wird
 
Zitat:

Zitat von erich.wanker (Beitrag 1178205)
Ich rufe "Free" auf. Wenn da ein grundlegender Fehler wäre, würde der aber immer kommen .. und nicht sporadisch.

Naja, es kommt immer auf den Code und den aktuellen Zustand der Software drauf an und was genau passiert. Schrebist du in eine DB? Was genau passiert alles beim "Abbau" der Anwendung? Ohne tiefere Einblicke bzw. mehr Informationen können wir auch nur im Trüben fischen.

Kannst ja mal zum Spass auch alle Timer deaktivieren. Solche Komponenten haben gerne etwas mit sporadisch auftretenden Fehler zu tun.

Bernhard Geyer 14. Aug 2012 13:24

AW: Fehler nachdem die Software beendet wird
 
Habe die Erfahrung gemacht das man DB-Verbindungen (bei mir BDE) frühzeitig beenden sollte (OnCloseQuery) damit es nicht zu sporatischen Exception kommts (bei mir wars zugriff auf Screen.Curser nachdem die Screen-Instanz schon freigegeben war).

p80286 15. Aug 2012 14:53

AW: Fehler nachdem die Software beendet wird
 
Wie wäre es mit dyn. globalen Variablen?
Z.B. eine Stringlist, die irgendwo in der Unit initialisiert wird und dann eben nicht immer bis zum Finalization durchhält.

Gruß
K-H

jaenicke 15. Aug 2012 15:44

AW: Fehler nachdem die Software beendet wird
 
FastMM hilft, insbesondere falls da Objekte benutzt werden sollten, die schon freigegeben wurden. Denn das knallt ohne Prüfung eben nicht immer, würde also auch zu deiner Beschreibung passen.

Ansonsten wären die üblichen Helferlein madExcept, ...

DSCHUCH 16. Aug 2012 08:13

AW: Fehler nachdem die Software beendet wird
 
Diese Fehler sind sehr sehr nervig. Das letzte mal lag es bei mir daran das ich eine DLL-Funktion in der Aufruf-Methodik als stdcall angegeben hatte, in der dll selbst war die einsprungsfunktion aber als safecall (also der default wert, ich hatte die angabe vergessen) definiert. Beim Programm beenden und entladen der DLL knallte es dann und die Anwendung blieb im Hintergrund hängen.

Prüfe das mal vielleicht liegt es wirklich daran- ich kann es nicht zu 100% sagen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 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