作者:乐天小散_608 | 来源:互联网 | 2023-08-31 22:47
http:www.cnblogs.comneoragex2002articles740643.htmlA.Mingw32环境的MAME源代码级IDE调试Insightdebu
http://www.cnblogs.com/neoragex2002/articles/740643.html
A.Mingw32环境的MAME源代码级IDE调试
Insight debugger是Redhat的GnuPro开发套件之一,一个基于Tcl/Tk的gdb前端,纯绿色而又短小精悍。它在win32平台下也有对应的Mingw32 build,因此跟mame的编译环境是完全匹配的。insight比较适合熟悉gdb和linux环境的开发者使用。以下是使用insight 6.3来对mame进行源代码级调试的基本步骤:
- 按照文献[1]的方式配置好Mingw32,将其安装至c:/mingw
- 将Insight解压至c:/insight
- 'make clean',删除所有的objs,重置编译环境
- 'make SYMBOLS=1',编译mame,别忘了符号编译选项'SYMBOLS=1'
- 启动C:/insight/bin/insight.exe
- 菜单File->Target Settings->Connection->Target,选择'Exec'
- 在下面的ExecArguments里面添上mame的命令行启动参数,如ddragon2
- File->Open,加载刚刚编译好的mame.exe
- Run->Run,启动程序,然后便可以设置断点、单步跟踪了
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的基本步骤:
- 确信已经安装好了Visual Studio 2005和DirectX SDK(必不可少)
- 确信已按照文献[1]的方式正确配置好了Mingw环境(因为我们要用到Mingw的make.exe)
- 在c:/mame中建立一个批处理文件setupvc.bat,用来建立vc编译所需的环境变量,其内容见后面
- 运行一次setupvc.bat,设置好所有编译相关的环境变量
- 然后'make clean',以防止残留下来的gcc objs干扰vc编译
- 输入'make MSVC_BUILD=1'即可开始编译
- 如果嫌麻烦,可以直接修改osd层的windows.mak,将1设置成为MSVC_BUILD的默认值
- Tips 1: vs2005提供了一个名为'Visual Studio 2005 Command Prompt'的控制台快捷方式,同时自动设置相关的环境变量,参照这一思路,我们也可以创建一个'MAME Command Prompt'的console shortcut,将其属性中的目标设置成'%comspec% /k c:/mame/setupvc.bat',起始位置设成c:/mame即可,这样便不必每次手工输入'setupvc.bat'了,很方便
- Tips 2: MSVC_BUILD标志可以配合TARGET、SYMBOLS和PM、I686等标志一起使用
- 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编译步骤,下面继续给出调试步骤:
- 运行setupvc.bat,确保vs2005编译环境变量正确建立
- 'make clean',删除所有objs,重置编译环境
- 'make MSVC_BUILD=1 SYMBOLS=1',这里的SYMBOLS=1是关键,如果没有设置这个符号编译选项,将无法进行源代码级调试
- 编译完成之后,打开vs2005 IDE, File->Open->Project/Solution->Files of type选择Executable Files,注意,不是Open->File...,而是Open->Project/Solution...
- File->Open->Project/Solution,加载刚刚编译所得的mame.exe
- 在Solution Explorer中设置一下mame.exe的Properties,在Command Arguments中添加mame的命令行参数,如ddragon2
- 然后Debug->Step Over,调试启动,看到了吗? 梦寐以求的IDE调试环境! 呵呵
参考文献:
[1] MAME架构、编译及配置浅析, Neoragex2002's Weblog, 2006.6
[2] Building MAME using Microsoft Visual Studio compilers, MameDev.org, 2006