Skip to content

How to Capture & Report Windows Crashes

Felipe Braz edited this page Sep 27, 2026 · 2 revisions

When Command & Conquer: Generals or Zero Hour (GeneralsX) unexpectedly quits, freezes on launch, or crashes with an unhandled exception (such as Access Violation 0xC0000005), Windows provides multiple diagnostic mechanisms to capture the root cause.

This guide explains how to capture real-time terminal logs, inspect engine error logs, configure Windows Error Reporting (WER) to capture crash dumps (.dmp), inspect Event Viewer logs, and submit an actionable bug report to the development team.


1. Capturing Real-Time Logs via PowerShell (Tee-Object)

When launched normally by double-clicking the executable or a desktop shortcut, standard console output (stdout) and error streams (stderr) are not visible in Windows. Running the game from PowerShell with stream redirection allows you to see startup diagnostics and write them to a log file simultaneously.

Step 1: Open PowerShell in the Game Directory

  1. Navigate to your GeneralsX game directory in File Explorer.
  2. Hold Shift, right-click in an empty space of the folder, and select Open PowerShell window here (or Open in Terminal on Windows 11).

Step 2: Run with Stream Redirection

Launch the executable in windowed mode (-win) and redirect all output streams (*>&1) to Tee-Object:

# For Zero Hour:
.\GeneralsXZH.exe -win *>&1 | Tee-Object -FilePath "generalsx.log"

# For the base game:
.\GeneralsX.exe -win *>&1 | Tee-Object -FilePath "generalsx.log"

Tip

The -win flag forces the game into windowed mode. This prevents full-screen display mode locks if the game hangs or crashes on startup, allowing you to easily read the console output.

What to Look For

Inspect generalsx.log or the console output for:

  • Missing big archives (e.g., INIZH.big, SpeechZH.big, Textures.big).
  • INI parsing errors or missing audio/shader files.
  • Initialization errors in SDL3 or the rendering backend.

2. Checking Built-in Engine Crash Logs

When the game engine's internal exception handler intercepts a crash, it generates a text log file containing the call stack and register state:

ReleaseCrashInfo.txt

Look for ReleaseCrashInfo.txt in:

  1. The Game Directory: Next to GeneralsXZH.exe.
  2. User Data Directory:
    • Zero Hour: %USERPROFILE%\Documents\Command and Conquer Generals Zero Hour Data\
    • Base Game: %USERPROFILE%\Documents\Command and Conquer Generals Data\

If present, this file contains the CPU instruction pointer, register dump, and the function stack at the exact moment of failure.


3. Capturing Crash Dumps (.dmp) via Windows Error Reporting (WER)

If the game crashes with a hard fault (e.g., stack overflow, access violation, or heap corruption) that terminates before the engine handler can catch it, you can configure Windows Error Reporting to automatically generate a MiniDump or Full Memory Dump (.dmp).

Step 1: Enable WER Local Dumps via PowerShell

  1. Open PowerShell as Administrator (Right-click Start menu → Windows PowerShell (Admin) or Terminal (Admin)).
  2. Run the following commands to configure Windows to save crash dumps to C:\Dumps:
# Create the dump directory
New-Item -ItemType Directory -Path "C:\Dumps" -Force

# Configure LocalDumps for Zero Hour (GeneralsXZH.exe)
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\GeneralsXZH.exe" -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\GeneralsXZH.exe" -Name "DumpFolder" -Value "C:\Dumps" -PropertyType ExpandString -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\GeneralsXZH.exe" -Name "DumpType" -Value 2 -PropertyType DWord -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\GeneralsXZH.exe" -Name "DumpCount" -Value 10 -PropertyType DWord -Force

# (Optional) Configure LocalDumps for the Base Game (GeneralsX.exe)
New-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\GeneralsX.exe" -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\GeneralsX.exe" -Name "DumpFolder" -Value "C:\Dumps" -PropertyType ExpandString -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\GeneralsX.exe" -Name "DumpType" -Value 2 -PropertyType DWord -Force
New-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\GeneralsX.exe" -Name "DumpCount" -Value 10 -PropertyType DWord -Force

Dump Configuration Details:

  • DumpType = 2: Creates a Full Dump (includes complete process memory). This provides developers with full inspection capabilities (variable states, heap, stack).
  • DumpType = 1: Creates a MiniDump (only call stacks, registers, and loaded modules). Significantly smaller file size.
  • DumpCount = 10: Retains up to the last 10 crash dump files before overwriting older ones.

Step 2: Reproduce the Crash

Launch the game and perform the steps that trigger the crash. Once the game closes, Windows will automatically write the crash dump to:

C:\Dumps\GeneralsXZH.exe.<pid>.dmp

Important

Full dumps (DumpType = 2) can be several hundred megabytes in size. Always compress .dmp files into a .zip archive before uploading or sharing them with developers.

Step 3: Remove WER Configuration (Cleanup)

Once you have collected the required dumps, you can remove the registry keys:

# Remove Zero Hour dump configuration
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\GeneralsXZH.exe" -Recurse -Force

# Remove Base Game dump configuration
Remove-Item -Path "HKLM:\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\GeneralsX.exe" -Recurse -Force

4. Checking Windows Event Viewer

Windows automatically records application crash events in the System Application Log.

Option A: Via PowerShell (Quickest)

Run this command in PowerShell to query the last 5 application crashes:

Get-WinEvent -FilterHashtable @{LogName='Application'; ProviderName='Application Error'} -MaxEvents 5 | Format-List TimeCreated, Message

Option B: Via GUI (Event Viewer)

  1. Press Win + R, type eventvwr.msc, and press Enter.
  2. In the left tree, navigate to Windows Logs → Application.
  3. In the right panel, click Filter Current Log....
  4. Set Event level to Error and Event sources to Application Error, then click OK.
  5. Look for entries where the Faulting application name is GeneralsXZH.exe or GeneralsX.exe.
  6. Copy the event details, especially:
    • Faulting module name (e.g., GeneralsXZH.exe, d3d8.dll, ntdll.dll, OpenAL32.dll)
    • Exception code (e.g., 0xc0000005 for Access Violation)
    • Fault offset (e.g., 0x0014a2b0)

5. Graphics & Rendering Logs (DXVK / Direct3D)

Depending on your build configuration, GeneralsX on Windows may use DXVK (Direct3D 8/9 to Vulkan translation) or native D3D:

  1. DXVK Logs: If your build uses DXVK, check the game directory for:
    • GeneralsXZH_d3d8.log or d3d8.log
    • GeneralsXZH_d3d9.log or d3d9.log
  2. GPU Drivers: Make sure your graphics card drivers are up to date. If using Vulkan translation, verify that your GPU supports Vulkan 1.3.

6. How to Submit a Windows Bug Report

When reporting a crash or launch issue on GitHub:

  1. Title: Include platform and symptom (e.g., [Windows] Crash on startup after splash video or [Windows] Crash when detonating Particle Uplink Cannon).
  2. Environment Information:
    • OS: Windows 10 / Windows 11 (build version, e.g., 23H2)
    • GPU & Driver: e.g., NVIDIA GeForce RTX 3070 (Driver 560.xx) / AMD Radeon RX 6800
    • Binary Version: Commit hash or release version
  3. Logs and Event Details:
    <details>
    <summary>Event Viewer / Terminal Log (generalsx.log)</summary>
    
    ```text
    PASTE_LOG_CONTENT_HERE
    ```
    </details>
  4. Crash Dump or ReleaseCrashInfo.txt:
    • Attach ReleaseCrashInfo.txt directly to the issue.
    • For .dmp files, zip the dump file and attach it (or upload to a secure file host if larger than GitHub's attachment limit).

Clone this wiki locally