Board logo

标题: [原创]dr-debug使用詳解  [打印本页]

作者: wolfwood     时间: 2003-2-14 00:00    标题: [原创]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