Debug概览
Debug是什么?
- debug是Windows 16位或者32位机器上的一款调试工具。也就是说,在WindowsXP及以前的机器上都有debug,直接Win+X debug就可以调出;在之后的32位机也有;但是在之后的64位机器上不存在,即使有,也无法运行。
不必尝试到底能不能运行,绝对不能
- 相似的,微软的masm也无法在64位版本的系统上运行。
可以通过安装dosbox来虚拟一个DOS环境或者使用WindowsXP(虚拟机即可)的方式来使用debug和masm。
debug的作用是什么?如何打开debug?
- 顾名思义 - 用来调试的工具。debug有极为丰富的命令支持,灵活、高效。debug的调试不同于IDE的调试 - 虽然都支持下断点的方式,但是debug能够直接查看CPU寄存器的内容,甚至能够在程序运行过程中修改自身代码 - 这是IDE望尘莫及的。
- 打开debug的方式:Win + X呼出运行窗口,输入cmd,然后输入debug回车就行了。进入debug后,命令提示符会变成“-”,如下图。
但是一般来说不使用系统的debug进行实验以防止无意中损坏系统,一般来说使用单独分离出来的debug进行实验,以获得更高的安全性和更完整的功能体验。Debug下载链接在文末,与masm同打包
调用时在cmd中cd到存放debug.exe的文件夹,输入debug并回车就可以了。或者在当前文件夹编写一个bat,内容为字母cmd,撒谎及运行可以达到同样的效果。
Debug用法
- 先来一张命令概览表格
命令 | 含义 | 用法 |
---|---|---|
A | assemble | 在内存中直接编写代码 |
C | Compare | 比较内存 |
D | Dump | 查看内存内容 |
E | Enter | 修改内存内容 |
F | Full | 填充内存 |
G | Go | 执行代码 |
H | Hexarithmetic | 以16进制进行数学运算 |
I | Input | 从某个端口输入一个16进制并显示 |
L | load | 把文件或者绝对扇区内容读入内存 |
M | move | 数据传递(不同于汇编的move) |
N | name | 为读写磁盘文件定义文件名 |
O | output | 把指定字节发送到制定端口 |
Q | quit | 结束debug程序 |
R | Register | 寄存器命令 |
S | Search | 按照list清单查找内存range范围 |
T | track | 追踪命令 |
U | UNassemble | 反汇编内存中的指令 |
W | write | 把调试过的信息写到磁盘上 |