32汇编调试工具的使用

本文的主要目的是介绍在汇编调试的时候遇到LINK : fatal error LNK1104: cannot open file "\masm32\lib\kernel32.lib" 错误的情况.

VKDebug调试工具是Masm32开发包中附带的一个调试工具,在Masm32程序中做输出调试是很方便的。

  使用VKDebug很简单,只需像下面这样将debug.inc、debug.lib包含到程序中就可以了:

include debug.inc
includelib debug.lib

  这里要注意的是:VKDebug中的调试宏用到了Windows.inc头文件中定义的常量,以及使用了一些Kernel32.dll和Masm32库中的函数,因此必须在包含debug.inc和debug.lib之前包含windows.inc, kernel32.inc, kernel32.lib, masm32.inc, masm32.lib, 然后就可以在程序中使用debug.inc中的调试宏了。各个调试宏的具体用可以参考VKDebug手册,这里说两点需要注意的地方:

 

1、在程序中可以使用 DBGWIN_DEBUG_ON 来移除调试信息,使用 DBGWIN_EXT_INFO 来打印文件名和行号,使用方法如下:

DBGWIN_DEBUG_ON = 1 ;表示在程序中包含调试信息,0则程序正常编译为发行版程序,不包含调试信息。
DBGWIN_EXT_INFO = 1 ;表示在调试的过程中输出扩展信息,其实就是多输出所调试的文件名和调试宏所在的行号

 

2、使用VKDebug之后程序链接出现 LINK : fatal error LNK1104: cannot open file "\masm32\lib\kernel32.lib" 的错误:

  这个问题是由于debug.inc和debug.lib本身引起的库路径问题,不管你使用Makefile或Radasm来组织编译你的程序,解决这个问题的办法是确保你编译的源文件或者工程所在的逻辑驱动器的根目录下有Masm32开发包!比如:你的源文件或者整个工程在D:\Project\目录下,那么就将Masm32开发包拷贝到D:\盘根目录,就可以解决了。

.386
.model flat, stdcall
include    windows.inc
include    kernel32.inc
include    masm32.inc
include    debug.inc     ;这个最好放到最后
includelib kernel32.lib
includelib masm32.lib
includelib debug.lib
.code
Sum proc num1:dword,num2:dword,num3:dword
mov eax,num1
add eax,num2
add eax,num3
ret
Sum endp
main proc
invoke Sum,11,22,33
PrintDec eax ;打印十进制的数,具体见debug.inc(可在masm32/include目录下找到该文件)
ret
main endp
end main

发布了92 篇原创文章 · 获赞 16 · 访问量 16万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章