Thema: Delphi Stack überlauf

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

AW: Stack überlauf

  Alt 9. Sep 2016, 01:09
Das sind schon die Namen der "letzten" aufgerufenen Prozeduren.
Scheint so, als wenn der in 'ner Exceptionbehandlung wieder 'ne Exception auslöst?

Als Erstes erkennt man die "Schleife", wenn man 'ne Wiederholung sieht ... immer wieder eine/mehrere "gleiche" Aufrufe hintereinander.

Das Hauptproblem ist, dass Delphi den Stacktrace nicht bis zum Ende Anfang auflistet, sondern nach einer gewissen Anzahl einfach stillschweigend aufhört.
Ist auch OK, aber die "Trottel" hätten dann wenigstens einen "lade mehr" oder "lade alles"-Knopf einbauen sollen.

Du kannst da nur versuchen "vorher" einzusteigen.
z.B. in OnClose/OnCloseQuery/OnDestroy deiner Form einen Haltepunkt und dann versuchen mit F7/F8 weitergehen, bis du irgendwann in die Schleife rein kommst (in den ersten paar Durchläufen reicht der Stacktrace dann noch weit genug zurück.

Oder du gehst in den aktuellen Stacktrace, suchst dir einen der Aufrufe aus und setzt da einen Haltepunkt drauf. (Doppelklick im Stacktrace und dann im Delphi- oder Assemblercode den Haltepunkt rein)
Dann beenden (Strg+F2) und nochmal neu versuchen.
Der Haltepunkt wird nun schon im ersten Durchlauf anhalten und der Stacktrace reicht dann hoffentlich auch weit genug zurück, damit man eine bessere/eigene Prozedur findet, die den Fehler eventuell ausgelöst hat.
Problem ist dabei, dass der Haltepunkt auch schon während der Laufzeit anspringen könnte (falls die Procedur unglücklich öfters aufgerufen wird)
* nochmal mit einem anderen Haltepunkt versuchen
* oder den Haltepunkt "deaktivieren" (nicht löschen), das Programm starten lassen und dann kurz vorm Beenden ihn wieder aktivieren
PS: Es gibt auch Haltepunktgruppen > man kann den Haltepunkt deaktivieren und gibt bei ihm eine Gruppe an (einfach einen Namen wählen), legt noch einen Haltepunkt z.B. ins OnClose und gibt beim ihm in den "weiteren" Haltepunkteigenschaften bei "Gruppe aktivieren" diese Gruppe an > kommst's Programm beim zweiten Haltepunkt vorbei, wird der erste Haltepunkt aktiviert und hält beim nächsten Mal an
$2B or not $2B

Geändert von himitsu ( 9. Sep 2016 um 01:14 Uhr)
  Mit Zitat antworten Zitat