[DRWTSN32] Print some extra exception info 1384/head
authorMark Jansen <mark.jansen@reactos.org>
Thu, 28 Feb 2019 22:10:43 +0000 (23:10 +0100)
committerMark Jansen <mark.jansen@reactos.org>
Wed, 6 Mar 2019 22:04:11 +0000 (23:04 +0100)
base/applications/drwtsn32/sysinfo.cpp

index f52c58b..84bc023 100644 (file)
@@ -59,8 +59,20 @@ void PrintSystemInfo(FILE* output, DumpData& data)
     xfprintf(output, "    When: %d/%d/%d @ %02d:%02d:%02d.%d" NEWLINE,
              LocalTime.wDay, LocalTime.wMonth, LocalTime.wYear,
              LocalTime.wHour, LocalTime.wMinute, LocalTime.wSecond, LocalTime.wMilliseconds);
-    DWORD ExceptionCode = data.ExceptionInfo.ExceptionRecord.ExceptionCode;
-    xfprintf(output, "    Exception number: 0x%8x (%s)" NEWLINE, ExceptionCode, Exception2Str(ExceptionCode));
+
+    xfprintf(output, "    First chance: %u" NEWLINE, data.ExceptionInfo.dwFirstChance);
+    EXCEPTION_RECORD& Record = data.ExceptionInfo.ExceptionRecord;
+    xfprintf(output, "    Exception number: 0x%08x (%s)" NEWLINE, Record.ExceptionCode, Exception2Str(Record.ExceptionCode));
+    xfprintf(output, "    Exception flags: 0x%08x" NEWLINE, Record.ExceptionFlags);
+    xfprintf(output, "    Exception address: %p" NEWLINE, Record.ExceptionAddress);
+    if (Record.NumberParameters)
+    {
+        xfprintf(output, "    Exception parameters: %u" NEWLINE, Record.NumberParameters);
+        for (DWORD n = 0; n < std::min<DWORD>(EXCEPTION_MAXIMUM_PARAMETERS, Record.NumberParameters); ++n)
+        {
+            xfprintf(output, "      Parameter %u: 0x%p" NEWLINE, n, Record.ExceptionInformation[n]);
+        }
+    }
 
     char Buffer[MAX_PATH];
     DWORD count = sizeof(Buffer);