DEADSOFTWARE

game should write stack trace on exceptions now
[d2df-sdl.git] / src / engine / e_log.pas
index 937730d5d4fd822260f19fbbe9d42861c8ef4192..ed4cfe525f4479957cca8754c690a99be9f64b4c 100644 (file)
@@ -44,6 +44,9 @@ procedure e_LogWritefln (const fmt: AnsiString; args: array of const; category:
 procedure e_LogWriteln (const s: AnsiString; category: TRecordCategory=MSG_NOTIFY; writeTime: Boolean=true);
 
 
+procedure e_WriteStackTrace (const msg: AnsiString);
+
+
 var
   e_WriteToStdOut: Boolean = False;
 
@@ -240,6 +243,24 @@ begin
 end;
 
 
+{$I-}
+procedure e_WriteStackTrace (const msg: AnsiString);
+var
+  tfo: TextFile;
+begin
+  e_LogWriteln(msg, MSG_FATALERROR);
+  if (Length(FileName) > 0) then
+  begin
+    if xlogFileOpened then CloseFile(xlogFile);
+    xlogFileOpened := false;
+    AssignFile(tfo, FileName);
+    Append(tfo);
+    if (IOResult <> 0) then Rewrite(tfo);
+    if (IOResult = 0) then begin writeln(tfo, '====================='); DumpExceptionBackTrace(tfo); CloseFile(tfo); end;
+  end;
+end;
+
+
 procedure e_DeinitLog ();
 begin
   if xlogFileOpened then CloseFile(xlogFile);