Radasm调试技巧
辛苦总结 转载时请注明出处一.Radasm内置弹窗调试器用法
此法需要包含自定认头文件 radbg.inc
目录在E:\RadASM\Masm\Inc(根据您的目录来选择)
然后在需要下断点的地方 将鼠标移动过去 点击右键->断点->切换断点(快捷键是alt + F8)
然后运行程序 程序断下来了 效果如下图
(图小了看不清楚请 拖放到单独窗口查看)
方法总结:此法有点繁琐 因为要下断点才会断下来 没有断点就跳过去了
一个省力的方法是 把需要下断点的代码全选 然后alt + F8 这样就不用一个个下断点了
二.RadAsm 内置单步调试器的用法
此法需要dbghelp.dll (可从Windbg中取得此宝)
放在Radasm的根目录即可(解释一下:E:\RadASM\)
此法还需要做点预处理
首先:工程->工程选项->选择调试版本
1)编译、链接时加加入如下参数
ML /Zi /COFF
/Zi 增加符号调试信息,生成CodeView需要的调试信息,保存在.PDB文件中
/coff(必用) 产生的 obj文件格式为COFF格式
2)Link /DEBUG /DEBUGTYPE:CV
/DEBUG 在PE文件中加入调试信息
/DEBUGTYPE:CV 加入的调试信息类型,可以是CV或COFF。同时使用两种:both
如下图
此时重新构建生成exe
断点下法: 构建->调试->切换断点(快捷键Ctrl + T)
然后:构建->调试->运行(快捷键Shift + F7)将程序运行起来
然后程序断下
单步步入F7
单步步过Ctrl + F7
返回到光标处Ctrl + Shift + F7
不调试了要:构建->调试->停止(Alt + F)
详细截图如下
三.MASM32 SDK 自带的文本调试器的用法
此法需要包含
debug.inc
debug.lib
DBGWIN_DEBUG_ON = 1
表示在程序中包含调试信息,0则程序正常编译为发行版程序,不包含调试信息。
DBGWIN_EXT_INFO = 1
表示在调试的过程中输出扩展信息,其实就是多输出所调试的文件名和调试宏所在的行号
有时候会出现神马神马错误 那个错误忘记叫神马来着了
解决方法是
把masm32拷贝到你工程文件所在的根目录下
(注:比如你的工程文件在G:\Project下面 那么在G盘的根目录下也得存在一份masm32)
不要问我为什么 我真心表示不知道为什么 - -!
好了详细函数的用法就不写了参考此文
http://
还可直接调用调试器打印子程序
OutputDebugString 打印函数的用法
1)在被调试程序代码中添加如下两个头文件。
include ;masm32.inc 需要的头文件
includelib ;masm32.lib 需要的头文件
2)直接在程序中调用 OutputDebugString 函数即可输出指定的字符串到 DbgView 的信息窗口
四.OD中调试
此法 估计地球人都知道了 在罗嗦一遍 - -!
同样在工程选项中设置如下参数
1)编译、链接时加加入如下指令
ML /Zi /COFF
/Zi 增加符号调试信息,生成CodeView需要的调试信息,保存在.PDB文件中
/coff(必用) 产生的 obj文件格式为COFF格式
2)Link /DEBUG /DEBUGTYPE:CV
/DEBUG 在PE文件中加入调试信息
/DEBUGTYPE:CV 加入的调试信息类型,可以是CV或COFF。同时使用两种:both
如果您的Radasm设置的是OD为调试器
那么直接可以Ctrl + D调用OD
进入到OD主界面后
点查看->源文件 弹出源文件窗口(如下图)
双击您要调试的代码
调整好窗体摆放位置按照OD的操作 即可进行源码级调试
(也可直接在源码窗口中下断)如下图
4法各有千秋 灵活运用 欢迎楼下 补充内容 ^ _ ^