关于win32汇编的调试

时间:2023-02-02 01:18:54

在VC6环境下的win32汇编的调试,网上找的一篇文章,照着试了试,蛮不错的,特别是习惯VC编程的人来说,这种调试方法使用起来得心应手。

VC6调试器源码级调试win32汇编程序

 

 

使用一个好的调试器无疑对学习win32汇编是至关重要的,本人更偏爱VC的强大调试环境, 不要makefile文件。

编程环境:VC6.0Masm32v8

 

方法如下:

1 使用VC6新建一个空工程如testwin32 consolewin32 application等均可)。

2 把汇编工程中的文件拷至新建工程目录下(hello.asmhello.rc),并把这些文件加入工程中(*.asm添加到Source Files, *.rc添加到Resource Files)

3 配置IDE

1)、tools/optionDirectories下的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.exeml.err拷贝到C:/Program Files/ Microsoft Visual Studio/VC98/Bin

 

5、点击VC的编译就可以运行了哦。

至此就可以使用VC调试器源码级调试汇编程序了,可以设置断点,察看变量、内存、寄存器等,masm出现语法错误时可以双击output window中的错误行定位到程序中的指定行。

 

 

       为了不在debugrelease目录中产生超大的预编译头文件xxxx.pch,在工程设置(project settings)中的C/C++ -> Precompiled Headers的选项上选择

 

"不使用预编译头",其实就现在的电脑而言,不使用预编译头也能快速地编译C代码的哦.

 

 

       其实我只是告诉大家一个设置VC6.0用于CMASM32的混合编程的环境设置,具体的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源代码中,很方便的哦!