Hätte gern gewusst ob man zur Laufzeit den Aufrufstack auslesen lassen kann und falls ja wie das geht.
P.S. Ich meine nicht beim Debuggen.
Zugriff auf Aufrufstack
-
- Beiträge: 308
- Registriert: Do 9. Apr 2009, 10:10
- OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
- CPU-Target: 32Bit
- Wohnort: 785..
Zugriff auf Aufrufstack
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)
-
- Beiträge: 586
- Registriert: Mi 25. Mär 2009, 21:12
- OS, Lazarus, FPC: Laz trunk / fpc latest release / Win and other
- CPU-Target: mostly 32 bit
Re: Zugriff auf Aufrufstack
Kopie aus gdbmidebugger.pp
Ohne debug info gibt es einfach die Addressen.
there is also getframe() search it in the sources, to see how to get the current stack
Ohne debug info gibt es einfach die Addressen.
Code: Alles auswählen
on e: Exception do begin
try
debugln(['ERROR: Exception occured in ',ClassName+'.DoExecute ',
e.ClassName, ' Msg="', e.Message, '" Addr=', dbgs(ExceptAddr),
' Dbg.State=', dbgs(FTheDebugger.State)]);
Report := BackTraceStrFunc(ExceptAddr);
Report2 := Report;
Frames := ExceptFrames;
for I := 0 to ExceptFrameCount - 1 do begin
Report := Report + LineEnding + BackTraceStrFunc(Frames[I]);
if i < 5
then Report2 := Report;
end;
except
end;
debugln(Report);
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Zugriff auf Aufrufstack
Ich habe das Gefühl, dass eine ähnliche Funktion auch in den LCL-Methoden gibt (LCLProc/LCLIntf?). Ansonsten schau dir mal den Quelltext von T(Custom)Application.HandleException (oder so ähnlich) an, die macht das ja auch...martin_frb hat geschrieben:Kopie aus gdbmidebugger.pp
Ohne debug info gibt es einfach die Addressen.
Edit:
Schreibt das ganze nur in eine Datei: http://lazarus-ccr.sourceforge.net/docs ... stack.html; mir scheint, als ob diese Aufgabe innerhalb von Free Pascal und Lazarus nicht nur einmal gelöst wurde...
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein