[fpc-pascal] Logging full runtime-error/exception backtrace
Martin
lazarus at mfriebe.de
Mon Feb 20 16:34:32 CET 2012
On 20/02/2012 14:58, leledumbo wrote:
> I want to log the full runtime-error/exception backtrace to a file. I've
> tried all methods explained
> http://wiki.lazarus.freepascal.org/Logging_exceptions here but none seems
> to give the full backtrace. i.e. when compiled with -gl, instead of just the
> address, I could also get "line NN of file XX.pas". How could I do it?
>
If you ship with debug info, then see gdbmidebugger.pp
function TGDBMIDebuggerCommand.Execute: Boolean;
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;
-------
If you do not want to ship with debug info:
- compile with debug info
- keep a copy of the file with debug info
- use strip[.exe] to remove the debug info from shipping version
- dump addresses
when you get the addresses, you can use gdb and the copy with debug info
that you kept (must match 100% the shipped version)
you will need a smass script calling gdb for each address
gdb.exe -i mi project1.exe --eval-command="info line *0x428f60"
--eval-command=q
More information about the fpc-pascal
mailing list