中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [原创]dr-debug使用詳解  上一主题 | 下一主题
wolfwood
初级用户

wolfwood


积分 158
发帖 14
注册 2003-2-14
状态 离线
『楼 主』:  [原创]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            + 註釋






              [此贴子已经被作者于2003-2-20 0:57:17编辑过]





我不能偷也不能搶
2003-2-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
minisheep
高级用户




积分 830
发帖 233
注册 2002-11-29
状态 离线
『第 2 楼』:  

很好! 那能下呀!要单独的文件!



┃ \\\\//// ┃通缉:杨小邪 特点:贼丑
┃ (-●●-) ┃年龄:刚成年   性别:男
┃  \    /  ┃罪名:长的丑/总想见网友
┃   \︶/   ┃犯罪事实:吓死一片~
2003-2-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wolfwood
初级用户

wolfwood


积分 158
发帖 14
注册 2003-2-14
状态 离线
『第 3 楼』:  

自己下個dr-dos不就有了,裏邊還有更強的工具——taskmgr(dos下的多任務管理器)等等,但不能在別的dos上用,而且裏面有不少保護措施,不那麽容易破解的。不過早已經有人破掉了。



我不能偷也不能搶
2003-2-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 4 楼』:  

我用过DR-DOS中的TASKMGR,不过很不稳定,并不实用。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2003-2-14 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
闪猛
中级用户




积分 327
发帖 69
注册 2002-12-1
状态 离线
『第 5 楼』:  

楼主,下次发表文章时能不能用简体中文?
你的文章我看得眼睛发疼,太费劲了。:(

2003-2-15 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 6 楼』:  

是吗?我看繁体中文时倒觉得很习惯,虽然看简体中文更习惯些。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2003-2-15 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
wolfwood
初级用户

wolfwood


积分 158
发帖 14
注册 2003-2-14
状态 离线
『第 7 楼』:  



  Quote:
以下是引用Wengier在2003-2-15 7:16:51的发言:
是吗?我看繁体中文时倒觉得很习惯,虽然看简体中文更习惯些。

對吧,中華書局的書和臺灣的文獻看多了就是覺得還是繁體的舒服。



我不能偷也不能搶
2003-2-16 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 8 楼』:  

繁体中文是中华的瑰宝呀,现在全世界华人地区(除大陆外)都在用。大陆也是40多年前才开始用简体中文的。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2003-2-17 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
LanE
银牌会员




积分 1832
发帖 647
注册 2002-11-8
状态 离线
『第 9 楼』:  

呵呵,无所谓的,只要能看得懂就好啊。

2003-2-18 00:00
查看资料  发送邮件  发短消息 网志  OICQ (9367907)  编辑帖子  回复  引用回复

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


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



论坛跳转: