By default, MAME is configured via the makefile to build using the MinGW gcc compiler. Although this is a nice cross-platform solution, debugging binaries built this way leaves a lot to be desired.

If you own a copy of Visual Studio, you can configure MAME to build using those tools instead. Once you have done that, you can debug problems in MAME using the Visual Studio debugger, which is a huge step up from gdb.

Here's how to make it work:

  1. You must already have an environment that can build MAME using the MinGW tools. Although you won't be using gcc to compile, you will be using several of the other tools included in the standard MAME MinGW Development Environment
  2. From the command prompt, you need to run the batch file that was installed with Visual Studio which configures the executable, include, and library paths.
    • For example, on Visual Studio 2005, the command is: "\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86 (To build a 64-bit version, change the x86 to amd64)
  3. Switch to the directory where the root MAME makefile lives.
  4. Once you've done that, simply run: make MSVC_BUILD=1 DEBUG=1 SYMBOLS=1 and wait for it to complete (I suggest building with DEBUG=1 as that also disables optimizations and makes debugging much easier).

At this point, you should now have a mamed.exe that was built using Visual Studio tools. To debug it is very easy.

  1. Open up Visual Studio.
  2. From the File menu choose "Open Project..."
  3. Select vmamed.exe (you may need to adjust the file filters to show .exe files).
  4. To configure command line parameters, right click on the vmamed.exe item in the Solution Explorer window and choose "Properties". In that window you can specify the "Command Arguments" which would be the command line parameters you want.
  5. Set some breakpoints if you want, and hit "Go" (F5), or else single step into main by hitting "Step Into" (F11).
  6. When you're done, Visual Studio will ask if you want to save a solution file (.sln); I usually say "yes", because then it will remember your last session parameters for the next time you want to debug MAME, and the solution will show up in the recent projects list.

Back to How MAME Works