4 DebuggingOnWindows
historic_bruno edited this page 2019-07-23 20:08:11 +00:00

If the game crashes or freezes when running on Windows, you can help us to debug the problem. If you have Visual C++ installed then you can use its debugger. Otherwise you should try these instructions to run the free WinDbg tool:

  • Install the Debugging Tools for Windows. (In the Windows SDK installer, you can disable everything except the first "Debugging Tools for Windows" option.)
  • Run WinDbg from the Start menu (in "Debugging Tools for Windows", or if you are on 64-bit Windows then "Debugging Tools for Windows (x64)").
  • Set "File > "Image File Path" to X:\path\to\0ad\binaries\system.
  • Set "File > "Source File Path" to X:\path\to\0ad.
  • Set "File" > "Symbol File Path" to srv*X:\symbols*<https://msdl.microsoft.com/download/symbols> per Debugging With Symbols.
  • "File" menu -> "Open Executable".
  • Browse to the location where you installed the game, and open pyrogenesis.exe in the binaries\system folder.
  • If you want to debug the Atlas editor, put "-editor" in the "Arguments" box before clicking "Open".
  • If it asks to "Save information for workspace", say yes.
  • Enter the following commands: (the last step may take several minutes the first time you do this - wait until the "BUSY" prompt goes away)
.symfix
.reload /f
  • "Debug" menu -> "Go".
  • If you are on 64-bit Windows: The game may not start immediately, and the WinDbg window may say
(690.8c8): WOW64 breakpoint - code 4000001f (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
ntdll32!LdrpDoDebuggerBreak+0x2c:
770b0f3b cc              int     3
0:000:x86>

In that case you should do "Debug" menu -> "Go" a second time, and then the game should start up.

  • You may want to switch the game from fullscreen to windowed mode (press alt+enter while running it) to make it easier to see to the WinDbg window.
  • When the game has failed (frozen or brought up an error message), switch to the WinDbg window and "Debug" -> "Break".
  • If you are on 64-bit Windows: Enter the command
!wow64exts.sw
  • Enter the command:
~* kp
  • If it shows a "BUSY" prompt, wait for that to go away (might take several minutes the first time you do this).
  • Copy-and-paste the output into some kind of pastebin service like this and post the link to it.