![]() |
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! |
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). |
AW: Gemeiner Programmabsturz, wie weiter machen?
Zitat:
Zitat:
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 11:29 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