Application.HandleException ist da, wo es bei dir schon raus ist.
Delphi-Quellcode:
function HandleMessage;
try
CallWindowsEvents; // hier hat es in einer unterfunktion geknallt
except
HandleException; // aber hier ist dein HandleException-Event drin, also ist ein Stacktrace von HIER aus sinnlos
end
System.ExceptObject ... das entspricht dem on E:
Exception im EXCEPT-Block
System.ExceptAddr ... hier hatte es geknallt
System.ReturnAddress ... mein Caller (bzw. der Befehl danach)
Schau dir mal die
Exception-Klasse genau an. Da kann man sich für die Stacktrace-Behandlung registrieren.
Also während die
Exception ausgelöst wird ... da kannst du den Stacktrace auslesen und innerhalb des aktuellen
Exception-Objektes speichern. (Delphi bietet nur die Zugangspunkte, aber ohne eigene Funktion)
Und in der anschließenden Exceptionbehandlung kannst du über das
Exception-Objekt an dessen Stacktrace wieder rankommen.