[原创] MAME: 如何进行源代码级的IDE调试?

A.Mingw32环境的MAME源代码级IDE调试

Insight debugger是Redhat的GnuPro开发套件之一,一个基于Tcl/Tk的gdb前端,纯绿色而又短小精悍。它在win32平台下也有对应的Mingw32 build,因此跟mame的编译环境是完全匹配的。insight比较适合熟悉gdb和linux环境的开发者使用。以下是使用insight 6.3来对mame进行源代码级调试的基本步骤:

  1. 按照文献[1]的方式配置好Mingw32,将其安装至c:\mingw
  2. 将Insight解压至c:\insight
  3. 'make clean',删除所有的objs,重置编译环境
  4. 'make SYMBOLS=1',编译mame,别忘了符号编译选项'SYMBOLS=1'
  5. 启动C:\insight\bin\insight.exe
  6. 菜单File->Target Settings->Connection->Target,选择'Exec'
  7. 在下面的ExecArguments里面添上mame的命令行启动参数,如ddragon2
  8. File->Open,加载刚刚编译好的mame.exe
  9. Run->Run,启动程序,然后便可以设置断点、单步跟踪了

mame_insight.PNG


B.Visual Studio 2005环境下的Mame命令行编译

Visual Studio 2005无疑是Win32平台中最好的编译环境,那么我们可以直接利用它来编译mame吗? 当然可以! 实际上,Mame Team在编写makefile的时候早已考虑到了这一点,他们在windows/windows.mak定义了一个MSVC_BUILD标志,只要我们在make时开启这个标志,即可使用vc2005中的cl.exe、link.exe来替换mingw中的gcc等来进行编译和链接。下面是使用vs2005来编译mame的基本步骤:

  1. 确信已经安装好了Visual Studio 2005和DirectX SDK(必不可少)
  2. 确信已按照文献[1]的方式正确配置好了Mingw环境(因为我们要用到Mingw的make.exe)
  3. 在c:\mame中建立一个批处理文件setupvc.bat,用来建立vc编译所需的环境变量,其内容见后面
  4. 运行一次setupvc.bat,设置好所有编译相关的环境变量
  5. 然后'make clean',以防止残留下来的gcc objs干扰vc编译
  6. 输入'make MSVC_BUILD=1'即可开始编译
  7. 如果嫌麻烦,可以直接修改osd层的windows.mak,将1设置成为MSVC_BUILD的默认值
  8. Tips 1: vs2005提供了一个名为'Visual Studio 2005 Command Prompt'的控制台快捷方式,同时自动设置相关的环境变量,参照这一思路,我们也可以创建一个'MAME Command Prompt'的console shortcut,将其属性中的目标设置成'%comspec% /k c:\mame\setupvc.bat',起始位置设成c:\mame即可,这样便不必每次手工输入'setupvc.bat'了,很方便
  9. Tips 2: MSVC_BUILD标志可以配合TARGET、SYMBOLS和PM、I686等标志一起使用
  10. Tips 3: Mame guys写了个非常smart的转换器,用来实现功能等价的gcc编译选项与不同版本的cl选项之间的相互转换,其源码为windows/vconv.c,感兴趣的可以读一下,其配置思想值得借鉴

rem 以下是setupvc.bat的脚本内容

@echo off
rem -------------------------------------------------------------------------------
rem 调用vs2005所提供的环境变量设置脚本

call 
"C:\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat" x86
rem -------------------------------------------------------------------------------
rem 将DirectX SDK的include/lib路径添加至环境变量,请根据实际情况加以修改

set INCLUDE
=%INCLUDE%;C:\Program Files\Microsoft DirectX SDK (October 2006)\Include
set LIB
=%LIB%;C:\Program Files\Microsoft DirectX SDK (October 2006)\Lib\x86
rem -------------------------------------------------------------------------------


C.Visual Studio 2005 IDE环境下的Mame源代码级调试

既然能够用vs2005来编译mame,那么使用华丽而又强大的vs2005 IDE来对其进行源代码级调试便是非常轻松的一件事了,对于绝大多数不太熟悉linux环境的开发人员而言,这可比gdb/insight调试要轻松得多! 紧接着上面的vs2005编译步骤,下面继续给出调试步骤:

  1. 运行setupvc.bat,确保vs2005编译环境变量正确建立
  2. 'make clean',删除所有objs,重置编译环境
  3. 'make MSVC_BUILD=1 SYMBOLS=1',这里的SYMBOLS=1是关键,如果没有设置这个符号编译选项,将无法进行源代码级调试
  4. 编译完成之后,打开vs2005 IDE, File->Open->Project/Solution->Files of type选择Executable Files,注意,不是Open->File...,而是Open->Project/Solution...
  5. File->Open->Project/Solution,加载刚刚编译所得的mame.exe
  6. 在Solution Explorer中设置一下mame.exe的Properties,在Command Arguments中添加mame的命令行参数,如ddragon2
  7. 然后Debug->Step Over,调试启动,看到了吗? 梦寐以求的IDE调试环境! 呵呵

mame_vs2005.PNG

参考文献:
[1]
MAME架构、编译及配置浅析, Neoragex2002's Weblog, 2006.6
[2]
Building MAME using Microsoft Visual Studio compilers, MameDev.org, 2006

posted @ 2007-05-09 20:45  neoragex2002  阅读(3623)  评论(5编辑  收藏  举报