Delphi-PRAXiS

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

Delle52 29. Nov 2009 14:15


Exception bei Programmende
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
nach Programmende erhalte ich immer eine Exception (s. Anhang).
Sie findet während des Aufrufs von _Halt0 in der System-Unit statt.
Und zwar hier beim Aufruf von P:

Delphi-Quellcode:
if InitContext.DLLInitState = 0 then
    while ExitProc <> nil do
    begin
      @P := ExitProc;
      ExitProc := nil;
      P;
    end
;

Hat da jemand einen Tipp für mich?

Gruß Kaloschke

himitsu 29. Nov 2009 14:26

Re: Exception bei Programmende
 
Hast du irgendwelche Finalisierungsabschnitte (finalization) in deinen Units?
Wenn ja, dann areite diese mal schrittweise ab ... irgendwo (in deinen Abschnittden oder denen von Delphi und Co.) steckt vermutlich irgendwo ein falscher/defekter Zeiger.

Delle52 29. Nov 2009 14:41

Re: Exception bei Programmende
 
Hi,
es gibt keine Finalisierungsabschnitte. Jeglicher Beendigungscode von mir wird abgearbeitet. Die Exeption tritt erst NACH Application.Run beim Aufruf von "end." des Hauptprgramms auf.
Gruß Kaloschke

himitsu 29. Nov 2009 15:30

Re: Exception bei Programmende
 
Erst nach diesem "end." werden die Finalisierungsabschnitte abgearbeitet.

Da du die QuellCodes hast, bisdu wohl im besitz einer Professional oder höher.

In neueren Delphis, kannst du in den Projektoptionen die DebugDCUs einbinden
und könntest dann schauen wo es knallt.

Entweder ist in einem Abschnitt ein fehlerhafter Code oder schon vorher ist was "schlimmes" passiert.

z.B. ein Bufferoverrun oder irgendwo wurde eine Instanz eines nicht (mehr) existierenden Objektes gespeichert, welches jetzt versucht wird in soeinem Abschnitt freizugeben.




also Programm bis zum "end." des Projekts laufen lassen

und dann entweder mit DebugUnits debuggen

oder ab dieser Stelle in die CPU-Ansicht wechseln und dann bis zum "knall" durchgehn
(eigentlich sollte jeweils erkennbar sein, in welcher Unit man sich grade befindet und dann wüßte man schonmal wo es in etwas passiert und könnte weiterschauen)

Delle52 29. Nov 2009 15:56

Re: Exception bei Programmende
 
Hi,

>Da du die QuellCodes hast, bisdu wohl im besitz einer Professional oder höher.

2010 Prof.

>In neueren Delphis, kannst du in den Projektoptionen die DebugDCUs einbinden
>und könntest dann schauen wo es knallt.

Sind eingebunden

>oder ab dieser Stelle in die CPU-Ansicht wechseln und dann bis zum "knall" durchgehn
>(eigentlich sollte jeweils erkennbar sein, in welcher Unit man sich grade befindet und dann wüßte man schonmal wo es in etwas >passiert und könnte weiterschauen)

Hab ja am Anfang schon geschrieben, dass und wo es in der System-Unit hängt. Ab dem Aufruf von P geht ws zwar im Asm-Code weiter, aber der führt letzlich nur zum Aufruf des Errordialogs.

Na, ich schau noch mal, ob ich alles wieder freigebe, was freizugeben ist.

Gruß Kaloschke

Autor: Delle52

himitsu 29. Nov 2009 16:10

Re: Exception bei Programmende
 
Delphi-Quellcode:
if InitContext.DLLInitState = 0 then
    while ExitProc <> nil do
    begin
      @P := ExitProc;
      ExitProc := nil;
      P;
    end
in diesem Code werden die Exit-Prozeduren verarbeitet und in Einer davon gibt es wohl Probleme.


Tja, und da du er Einzige mit (Test)Code bist, kannst nur du das Problem suchen.


Hast du vielleicht irgendwelche Fremdkomponenten verwendet?
Eventuell sind da schon Probleme bekannt.


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