Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Laufzeitfehler bei Programmende (https://www.delphipraxis.net/205564-laufzeitfehler-bei-programmende.html)

skoschke 24. Sep 2020 06:05

Laufzeitfehler bei Programmende
 
Hallo,

bei Programmende wirft meine Anwendung eine Exception der Klasse $C00000005 read of adresse 0x0000000000.

Beim Debuggen läuft alles bis ins OnClose des Formulars, das kann ich ohne Fehler durchsteppen und dann knallt es, das OnDestroy des Formulars (weiterer Haltepunkt) wird dann nicht mehr erreicht.

Ich habe keine Ahnung wo ich da ansetzen könnte um die Ursache zu finden...

Hat jemand einen Tip wie man hier generell vorgehen könnte?

Ciao
Stefan

sakura 24. Sep 2020 06:12

AW: Laufzeitfehler bei Programmende
 
Es ist so pauschal nicht zu sagen, aber irgendwo wird auf ein NIL-Pointer zugegriffen.

...:cat:...

Bernhard Geyer 24. Sep 2020 06:46

AW: Laufzeitfehler bei Programmende
 
Compiliere mit Debug-DCUs.
Bei mir war es mal das ein DB-Verbindung erst beim Aufräumen der Anwendung beendet wurde.
Verlegt ins OnClose hatte geholfen.

hoika 24. Sep 2020 07:28

AW: Laufzeitfehler bei Programmende
 
Hallo,
läuft die Exe auf einem Netzlauwerk oder lokal?

skoschke 24. Sep 2020 07:46

AW: Laufzeitfehler bei Programmende
 
Mit Debug DCU's compiliere ich bereits, nur wie sollen die bei der Fehlersuche helfen?

Dass da irgendwo auf etwas Nil zugegriffen wird, ist mir eigentlich klar, nur wie finde ich dieses?

Ciao
Stefan

skoschke 24. Sep 2020 08:24

AW: Laufzeitfehler bei Programmende
 
Ich habe MadExcept eingebaut, welches auch bei einem provozierten Fehler (ButtonClick der Division durch 0 erzeugt) wunderbar anzeigt.
Erst kommt der Division durch 0 Fehler und danach geht das MadExcept-Fenster auf.

Nur bei Programmende schlägt MadExcept nicht an, ich bekomme den oben gemeldeten Fehler ohne dass danach MadExcept aufgeht.

Und nun???

Ach so, die Exe läuft lokal...

Ciao
Stefan

jaenicke 24. Sep 2020 08:54

AW: Laufzeitfehler bei Programmende
 
Wie sieht denn bei dem Fehler der Stacktrace aus?

// EDIT:
Vermutlich passiert da etwas im finalization einer Unit oder bei der Freigabe eines Interfaces. Es kann auch ein weiteres Formular sein, das erst am Ende freigegeben wird und dabei einen Fehler verursacht.

Zum Beispiel passiert so etwas, wenn man ein Objekt als Objekt UND als Interface anspricht und es dann aus Versehen freigibt. Dann wird am Ende das Interface versucht freizugeben, aber das Objekt ist schon weg.

himitsu 24. Sep 2020 09:14

AW: Laufzeitfehler bei Programmende
 
Tja, wenn es im Delphi-Code nicht weiter geht, dann mußt du wohl in die Assembleransicht wechseln. :stupid:


Zeigt der Stacktrace irgendwas an?
Wenn nicht, dann nochmal "F7" nach dem Fehler versuchen, eventuell vorher in den Assembler wechseln.

Zitat:

Zitat von sakura (Beitrag 1474136)
aber irgendwo wird auf ein NIL-Pointer zugegriffen.

Ja, hier vermutlich ein Event-Zeiger, wo versucht wird an Adresse $000000 Code auszuführen. (wo es im UserMode niemals Code/Daten geben wird)
Denn sonst heißt der Fehler ja "Fehler bei Adresse xxxx, Lesen/Schreiben von Adresse yyyy" und hier ist dieser Fehler an der Code-Adresse 0.

Es kann natürlich auch etwas wie ein Buffer-Overflow sein, wo z.B. der Stack zerschossen wurde.

hoika 24. Sep 2020 09:22

AW: Laufzeitfehler bei Programmende
 
Hallo,
arbeitet Dein Programm mit Interfaces?

skoschke 24. Sep 2020 09:33

AW: Laufzeitfehler bei Programmende
 
Zitat:

arbeitet Dein Programm mit Interfaces?
nein


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