This is an old revision of the document!


How to debug D3D9

Compile both Mesa-3D and Wine with CFLAGS and CXXFLAGS set to debug.

CFLAGS="-Og -ggdb -pg -g -gdwarf-2 -gstrict-dwarf" CXXFLAGS="${CFLAGS}"
  • -Og is better than -O0 and disable optimalization which interferes with debug (gcc >= 4.8)
  • -ggdb, -pg, -g adds debug information to code
  • -gdwarf-2, -gstrict-dwarf limit DWARF version to 2. It's necessary for both, because wine support is limited to version 2.

Also configure Mesa-3D with

--enable-debug

Make sure, you have disabled striping debug symbols if you are using distribution packages, ebuild or AUR.

Each issue can be caused in either wine or Mesa. If it's in mesa, you'll need to use

  • the NINE_DEBUG variable, to know what the D3D9 ST is doing. Pass NINE_DEBUG=help to get all options.
  • the NINE_TGSI_DUMP=1 variable for dumping generated TGSI code.
  • the TGSI_PRINT_SANITY=1 variable will precisely check TGSI and assert in case of errors

For wine, WINEDEBUG=+d3dadapter9,+d3d9 should be enough.

To get rid of annoying dbghelp warnings pass WINEDEBUG=-dbghelp_dwarf.

You also may be interested in apitrace.

APITrace

  • For debugging Windows application you'll need APITrace compiled for Windows
  • Windows version is almost always required for replaying