lydong
元老会员
积分 1468
发帖 407
注册 2002-10-21 来自 广州
状态 离线
|
『楼 主』:
转贴:dr-debug使用详解(简体)[作者: wolfwood ]
[作者: wolfwood ]dr-debug使用详解
debug使用详解
首先,向大家推荐使用DR-DOS7所带的DR-DEBUG,指令支持到Pemtium pro,功能强大,且支持宏。最方便的是可以用回车代替上一条u/d/p/t指令,方便察看和调试。
下面把其帮助翻译如下:
汇编,把输入的汇编语言转成机器码
A [address] (example: Acs:100)
设置中断点以调试
B [address] [count] [condition] (example: B100 2 al=80)
比较两段内存内容
Compare C range address (example: C200 20d 500)
显示指定内存数据
Dump D [range] (example: Dcs:500 L 10)
编辑内存数据
Enter E [address] [data] (example: Eds:500 "Hello "
填充内存
Fill F range data (example: F100 13f "Test "
运行程序从指定点
Go G [=address] [breakpoints] (example: Gcs:4bb0)
计算
Hex H [value1] [value2] (example: H10e 01)
从I/O埠输入
Input I port (example: I3f2)
载入文件或指定逻辑扇区内容
Load L [address] [drive] [firstsec] [number] (ex: L0Cff 3 09 10)
移动(复制)内存内容
Move M range address (example: Mcs:200 220 cs:400)
指定操作文件名
Name N [drive:] [path] filename (example: Ntest.com)
向I/O埠输出
Output O port value (example: O3ff 10)
单步执行(跳过int/rep/call等)
Proceed P [=address] [number] (example: P=ds:3fff)
退出debug
Quit Q
更改或显示寄存器
Register R [register_name] (example: Rax 1000)
搜索数据于指定内存
Search S range data (example: Sds:200 500 32)
单步执行(进入int/rep/call等)
Trace T [=address] [number] (example: T=3cff:0100 10)
反汇编指定内存中机器码
Unassemble U [range] (example: U3cff:0200 400)
显示屏幕内容(相当于)
Viewswap V (any key returns)
写入文件或指定逻辑扇区内容
Write W [address] [drive] [firstsec] [number] (ex: Wds:200 0 16 0f)
(range 可以是: 开始[段:]偏移 结束偏移 或 开始地址 L 长度)
以下是详细使用说明:
--- 术语表 ---
pathname - 文件名(路径可选)
testparms - 参数
address - 内存地址[段:]偏移
如果省略段地址,以CS用作汇编\反汇编;DS用于其他功能
range - 可以是: 开始[段:]偏移 结束偏移
开始地址 L 长度
开始地址, +长度
reg - 寄存器名
list - 由空格或逗号分开的一些数值(给定类型的)
drive - 0 = A:, 1 = B:, ...
firstsec - 逻辑扇区号(以0开始)
--- 运算符号 ---
数可以是16进制(默认的), #十进制, \八进制, %二进制, '字符串'("chars",
寄存器, [绝对地址], ^堆栈。
可以使用运算符(+ - * /) 及 (括号) 。
例:Rax=(^[ss:sp] + (bl * %1001) + 'a').
-代表基本debug命令
+代表dr-debug特有命令
x代表只能在dr-debug扩展模式下执行的指令,用/s进入默认模式,用/x进入扩展模式
--- Dump commands ---
-D[number] x 设置/查询默认显示长度(按字节)
-DB[number] x 设置/查询默认显示长度,并返回按字节模式
D=[hexdigit|?|-] x 设置/查询 察看开始点(0-f)
D [range] - 显示指定内存内容(/S 模式) / 重复上一次D? 命令(/X 模式)
DB[range] - 显示指定内存内容(按字节)
DW[range] x 显示指定内存内容(按字)
DD[range] x 显示指定内存内容(按双字)
DP[range] x 显示指定内存的指针(远间指针-段:偏移)
DI[range] x 显示中断向量表(range=中断号)
--- Enter commands ---
(省略list时,回车后输入数据,"."退出)
E [address ] + 输入数据
EB[address ] x 输入数据(按字节)
EW[address ] x 输入数据(按字)
ED[address ] x 输入数据(按双字)
EP[address ] x 输入数据(按远间指针)
EI[intnum ] x 输入中断向量
--- Compare commands ---
C range,address - 比较两段内存内容
CBrange,address x 比较两段内存内容(按字节)
CWrange,address x 比较两段内存内容(按字)
CDrange,address x 比较两段内存内容(按双字)
CPrange,address x 比较两段内存内容(按远间指针)
--- Fill commands ---
F range,list - 填充数据到内存
FBrange,list x 填充数据到内存(按字节)
FWrange,list x 填充数据到内存(按字)
FDrange,list x 填充数据到内存(按双字)
FPrange,list x 填充数据到内存(按远间指针)
--- Search commands ---
S address list - 搜索数据于指定内存
-Saddress list x 搜索数据于指定内存并保存第(cx+1)个匹配的偏移地址于cx中
[-]SBaddress list x 搜索数据于指定内存(按字节)(-SB 如前)
[-]SWaddress list x 搜索数据于指定内存(按字)(-SW 如前)
[-]SDaddress list x 搜索数据于指定内存(按双字)(-SD 如前)
[-]SPaddress list x 搜索数据于指定内存(按远间指针)(-SP 如前)
--- Port I/O commands ---
I port - 从I/O埠输入
IB port x 从I/O埠输入(按字节)
IW port x 从I/O埠输入(按字)
ID port x 从I/O埠输入(按双字)(386以上支持)
O port,value - 向I/O埠输出
OB port,value x 向I/O埠输出(按字节)
OW port,value x 向I/O埠输出(按字)
OD port,value x 向I/O埠输出(按双字)(386以上支持)
--- Macro commands ---
-: + 清除所有宏
:macroname + 定义宏
=[macroname] + 列出宏或执行宏
--- Disk I/O commands ---
N - 为下一个磁盘操作释放参数
N? + 显示参数
N[pathname] [testparms]
- 指定文件
L - 载入文件
Laddress - 载入文件到指定内存地址
W - 写内存到文件,始于cs:100 长度为BX-CX
W[address] - 写内存到文件,始于指定地址 长度为BX-CX
Laddress,drive,firstsec,number
- 载入指定逻辑扇区到指定内存(num=载入扇区个数)
Waddress,drive,firstsec,number
- 保存指定内存到指定逻辑扇区(num=保存扇区个数,或用BX-CX来指定其长度-按字节)
--- Trace commands ---
-B x 清除所有断点(breakpoint所译,下同)
-Baddress x 清除指定地址处断点
B + 列出断点
Baddress[count[reg=val]]
+ 设置断点于指定内存,每count次中断,中断条件:reg=val
T [=address][number] - 单步执行从指定地址开始的number条指令
TU[=address][number] + 同于 T ,但不显示中间指令的执行结果
P [=address][number] - 同于 T ,但跳过call和int子程序
PU[=address][number] + 同于 P ,但不显示中间指令的执行结果
G[=address][addresses] 执行从指定地址开始(或CS:IP),停止在[addresses]
--- Assemble command ---
A[address] - 进入输入汇编语言模式(回车/. 退出),支持注释
--- Unassemble commands ---
-Unumber x 设置/查询默认反汇编长度
U[range] - 反汇编指定内存指令
--- Help commands ---
? - 显示基本帮助
?topic + 显示特定主题或叶数(1..8)
?? or ?0 + 显示所有帮助
--- Display and input modes ---
A=[16|32] x 设置/查询默认地址模式(16位/32位)
O=[16|32] x 设置/查询默认操作数模式(16位/32位)
R=[16|32] + 设置/查询默认寄存器显示模式(16位/32位)
RF - 设置/查询标志位寄存器
RDR x 按16位寄存器方式显示标志位寄存器(/X 模式下默认)
RMS x 按标准方式显示标志位寄存器(/S 模式下默认)
--- Utility commands ---
ASCII [value] + 显示一个ASCII表
CLS + 清屏
CPU + 显示CPU类型(支持到Pentium pro)和工作模式(实模式/32位保护模式/虚拟86模式)
H value + 显示 'value' 按16进制、十进制、字符、八进制和二进制
H value1 value2 + 显示value1,value2 相加、减、乘、除以及取模的结果
V + 显示用户屏幕(程序执行结果,如同c中的)
; comment + 注释
----------------------------------------------
我不能偷也不能抢
|
欢迎大家观临我的个人主页:
http://dosdiy.bluepc.com.cn/
http://dosdiy.ys168.com/
EMAIL: lydong@china.com.cn lydong@yeah.net
----------------------------------------------
|
|