Chinaunix首页 | 论坛 | 博客
  • 博客访问: 419377
  • 博文数量: 63
  • 博客积分: 1175
  • 博客等级: 少尉
  • 技术积分: 1204
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-19 11:33
文章分类
文章存档

2015年(1)

2014年(3)

2013年(7)

2012年(52)

分类: WINDOWS

2012-04-19 12:08:17

用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源代码中,很方便的哦!

阅读(1284) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~