Browse Source

* add DumpExceptionBackTrace

git-svn-id: trunk@9071 -
peter 17 years ago
parent
commit
43c446e742
2 changed files with 22 additions and 0 deletions
  1. 19 0
      rtl/inc/system.inc
  2. 3 0
      rtl/inc/systemh.inc

+ 19 - 0
rtl/inc/system.inc

@@ -967,6 +967,25 @@ Begin
    end;
 {$endif FPC_HAS_FEATURE_EXCEPTIONS}
 End;
+
+
+{$ifdef FPC_HAS_FEATURE_EXCEPTIONS}
+procedure DumpExceptionBackTrace(var f:text);
+var
+  FrameNumber,
+  FrameCount   : longint;
+  Frames       : PPointer;
+begin
+  if RaiseList=nil then
+    exit;
+  WriteLn(f,BackTraceStrFunc(RaiseList^.Addr));
+  FrameCount:=RaiseList^.Framecount;
+  Frames:=RaiseList^.Frames;
+  for FrameNumber := 0 to FrameCount-1 do
+    WriteLn(f,BackTraceStrFunc(Frames[FrameNumber]));
+end;
+{$endif FPC_HAS_FEATURE_EXCEPTIONS}
+
 {$endif FPC_HAS_FEATURE_CONSOLEIO}
 
 

+ 3 - 0
rtl/inc/systemh.inc

@@ -786,6 +786,9 @@ Function  ParamStr(l:Longint):string;
 
 {$ifdef FPC_HAS_FEATURE_CONSOLEIO}
 Procedure Dump_Stack(var f : text;bp:pointer);
+{$ifdef FPC_HAS_FEATURE_EXCEPTIONS}
+procedure DumpExceptionBackTrace(var f:text);
+{$endif FPC_HAS_FEATURE_EXCEPTIONS}
 {$endif FPC_HAS_FEATURE_CONSOLEIO}
 
 Procedure RunError(w:Word);