中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS学习入门 & 精彩文章 (教学室) » 转贴:dr-debug使用详解(简体)[作者: wolfwood ]
作者:
标题: 转贴:dr-debug使用详解(简体)[作者: wolfwood ] 上一主题 | 下一主题
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
----------------------------------------------
2003-2-16 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (89677127)  编辑帖子  回复  引用回复
清扬菱子
初级用户




积分 106
发帖 1
注册 2004-2-2
状态 离线
『第 2 楼』:  

写的好。就是我太菜,看懂的只有小部分

2004-2-2 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Kinglion
铂金会员

痴迷DOS者


积分 5792
发帖 1921
注册 2003-6-20
来自 金獅電腦軟體工作室
状态 离线
『第 3 楼』:  

谢谢版主,尽管我经常使用它,我却没有想到将它介绍给大家,惭愧!打开附件
请大家对照着版主的帮助信息来分享这个DRDOS里强大的工具软件吧!



熟能生巧,巧能生精,一艺不精,终生无成,精亦求精,始有所成,臻于完美,永无止境!
金狮電腦軟體工作室愿竭诚为您服务!
QQ群:8393170(定期清理不发言者)
个人网站:http://www.520269.cn
电子邮件:doujiehui@vip.qq.com
微信公众号: doujiehui
2004-2-3 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (79207959)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: