[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