Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Gemeiner Programmabsturz, wie weiter machen? (https://www.delphipraxis.net/160202-gemeiner-programmabsturz-wie-weiter-machen.html)

wicht 2. Mai 2011 21:06

AW: Gemeiner Programmabsturz, wie weiter machen?
 
So.. ich schrieb hier einen ellenlangen Roman, wollte ein letztes mal in die Vorschau gucken, und dann war der rote Kasten da. Auf eine Antwort von brechi hofft man bei solchen Themen ja immer insgeheim ein bisschen. Die Sache von wegen "und gib die Adresse mit $ ein" hat mir weitergeholfen, dass das davor muss wusste ich nicht: Die Adresse liegt in TObject.Free() - und ich schätze jetzt mal, dass das Problem damit zusammenhängt, dass ich ein Objekt zweimal freigebe. Da könnte ich im zweifelsfall sogar mit Logging den Fehler finden. Oder gibt es eine Möglichkeit, ohne installiertes Delphi den Call-Stack zu bekommen? Ganz blöd gefragt, könnte ich das mit Visual Studio/Ollydbg/WinDbg sichtbar bekommen?
Nach etwas Testen gerade wurmt es mich aber, dass ein doppeltes .Free() in einem Testprogramm in .FreeInstance() abschmiert, nicht in .Free() wie im aktuellen Fall. Könnte es wirklich ein doppeltes Freigeben sein, oder ist das Problem u.U. ein anderes? Ausserdem springt madExcept in dem Fall an.. komisch.

Deinen Edit gesehen, aber die Frage, ob es wirklich ein doppeltes Freigeben sein kann, bleibt für mich trotzdem noch..
Die Idee mit der Testversion ist übrigens sehr schön, das wird morgen direkt gemacht - und erledigt die Frage nach dem Callstack dann wohl auch teilweise, obwohl es mich interessieren würde, ob der Callstack auch ohne Delphi zu bekommen ist.


Nochmal Danke an alle und einen schönen Abend noch!

brechi 2. Mai 2011 21:48

AW: Gemeiner Programmabsturz, wie weiter machen?
 
Den bekommst du auch mit OllyDbg. Wenn von Windows die Debugmeldung kommt mit Olly attachen, dann Debug drücken und F9 -> sollte an der Exception stehen bleiben (eben kurz getestet). ALT+K liefert den callstack oder halt unten rechts im Debugfenster.

Vill solltest du auch mal FreeAndNil verwenden (auch wenn unschön, da Free auf Nil testet) bzw. mit Assigned prüfen und ggf. Fehlermeldung ausgeben -> Assertion (nur wenn aus Delphi gestartet).

wicht 2. Mai 2011 22:03

AW: Gemeiner Programmabsturz, wie weiter machen?
 
Zitat:

Den bekommst du auch mit OllyDbg. Wenn von Windows die Debugmeldung kommt mit Olly attachen, dann Debug drücken und F9 -> sollte an der Exception stehen bleiben (eben kurz getestet). ALT+K liefert den callstack oder halt unten rechts im Debugfenster.
Wunderbar. Dann sehe ich morgen mal weiter.

Zitat:

Vill solltest du auch mal FreeAndNil verwenden (auch wenn unschön, da Free auf Nil testet) bzw. mit Assigned prüfen und ggf. Fehlermeldung ausgeben -> Assertion (nur wenn aus Delphi gestartet).
Damit hast du recht, auch wenn ich im allgemeinen nicht auf FreeAndNil() stehe, weil wenn man weiß, was man tut, und das Programm so läuft, wie es sollte, sollte man das nicht brauchen. Naja, scheinbar ist es aber gar nicht so verkehrt...

Danke nocheinmal für deine Hinweise und die Mühen, ich fühle mich jetzt gerüstet für den Kampf. Wenn ich wieder mal nicht weiterkomme oder das Problem erledigt sein sollte, melde ich mich wieder.


Gute Nacht,

Alex


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:34 Uhr.
Seite 2 von 2     12   

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