在VC6环境下的win32汇编的调试,网上找的一篇文章,照着试了试,蛮不错的,特别是习惯VC编程的人来说,这种调试方法使用起来得心应手。
用VC6调试器源码级调试win32汇编程序
使用一个好的调试器无疑对学习win32汇编是至关重要的,本人更偏爱VC的强大调试环境, 不要makefile文件。
编程环境:VC6.0,Masm32v8
方法如下:
1、 使用VC6新建一个空工程如test(win32 console,win32 application等均可)。
2、 把汇编工程中的文件拷至新建工程目录下(hello.asm,hello.rc),并把这些文件加入工程中(将*.asm添加到Source Files, 将*.rc添加到Resource Files)。
3、 配置IDE:
(1)、tools/option,Directories下的Include files,Directories:中添加一个路径d:/MASM32/INCLUDE 这是假设你的Masm32v8安装在d:/MASM32
(2)、打开工程设置(project settings),点击*.asm文件选择(Custom Build),
命令中加上: ml /c /coff /Zi /Fo$(TargetDir)/$(InputName).obj $(InputPath)
输出中加上: $(TargetDir)/$(InputName).obj
注意选Settings for: Win32 Debug 和 Win32 release,将上面的两条都加上。
(3)、将Win32ASM中的ml.exe和ml.err拷贝到C:/Program Files/ Microsoft Visual Studio/VC98/Bin
5、点击VC的编译就可以运行了哦。
至此就可以使用VC调试器源码级调试汇编程序了,可以设置断点,察看变量、内存、寄存器等,masm出现语法错误时可以双击output window中的错误行定位到程序中的指定行。
为了不在debug和release目录中产生超大的预编译头文件xxxx.pch,在工程设置(project settings)中的C/C++ -> Precompiled Headers的选项上选择
"不使用预编译头",其实就现在的电脑而言,不使用预编译头也能快速地编译C代码的哦.
其实我只是告诉大家一个设置VC6.0用于C与MASM32的混合编程的环境设置,具体的debug操作方法,大家要是用过VC6.0来调试C/C++,
就一定会调试ASM32,方法是统一的,
感觉比用makefile好多了,资源编译/编辑器也蛮好用.只是还有个问题我也没有搞懂:VC6.0的资源编译/编辑器不支持16进制的资源ID,
非要用10进制的,我是用两种方法解决的:一是将资源文件*.rc中的ID改成10进制;
二是直接用老罗书中的rc文件,但在VC6.0中不要打开编辑它就可以了.有人能告诉我VC6.0的资源编辑器用16进制ID的方法吗,可能这很简单,我没有去深究罢了.
我说的这种调试方法是VC6.0本身的源代码级调试(source code debug),是可以像调试C源码那样,边改边调,跟踪时你就会看到,debug window一会儿在C源代码中,
一会儿在ASM源代码中,很方便的哦!