DEADSOFTWARE

game should write stack trace on exceptions now
[d2df-sdl.git] / src / game / Doom2DF.dpr
index a66e792b6e38d9f44e537b7ac95d34254e571787..a47b72d1db22465bab5092fbcc08ba1400e3a82b 100644 (file)
@@ -117,6 +117,7 @@ uses
 var
   f: Integer;
   noct: Boolean = false;
+  tfo: Text;
 begin
   for f := 1 to ParamCount do
   begin
@@ -134,10 +135,21 @@ begin
       Main();
       e_WriteLog('Shutdown with no errors.', MSG_NOTIFY);
     except
-      on E: Exception do
-        e_WriteLog(Format(_lc[I_SYSTEM_ERROR_MSG], [E.Message]), MSG_FATALERROR);
+      on e: Exception do
+        begin
+          e_WriteStackTrace(e.message);
+          //e_WriteLog(Format(_lc[I_SYSTEM_ERROR_MSG], [E.Message]), MSG_FATALERROR);
+          AssignFile(tfo, GameDir+'/trace.log');
+          {$I-}
+          Append(tfo);
+          if (IOResult <> 0) then Rewrite(tfo);
+          if (IOResult = 0) then begin writeln(tfo, '====================='); DumpExceptionBackTrace(tfo); CloseFile(tfo); end;
+        end
       else
-        e_WriteLog(Format(_lc[I_SYSTEM_ERROR_UNKNOWN], [NativeUInt(ExceptAddr())]), MSG_FATALERROR);
+        begin
+          //e_WriteLog(Format(_lc[I_SYSTEM_ERROR_UNKNOWN], [NativeUInt(ExceptAddr())]), MSG_FATALERROR);
+          e_WriteStackTrace('FATAL ERROR');
+        end;
     end;
   end;
   e_DeinitLog();