debug是為組合語言設計的一種高度工具,它通過單步、設定斷點等方式為組合語言程式設計師提供了非常有效的除錯手段。
一、debug程式的呼叫
在dos的提示符下,可鍵入命令:
c:/debug [d:][path][filename[.ext]][parm1][parm2]
其中,檔名是被除錯檔案的名字。如使用者鍵入檔案,則debug將指定的檔案裝入儲存器中,使用者可對其進行除錯。如果未鍵入檔名,則使用者可以用當前儲存器的內容工作,或者用debug命令n和l把需要的檔案裝入儲存器後再進行除錯。命令中的d指定驅動器path為路徑,parm1和parm2則為執行被除錯檔案時所需要的命令引數。
在debug程式調入後,將出現提示符,此時就可用debug命令來除錯程式。
二、debug的主要命令
1、顯示儲存單元的命令d(dump),格式為:
_d[address]或_d[range]
例如,按指定範圍顯示儲存單元內容的方法為:
-d100 120
18e4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 g...8.g.....g...
18e$:0110 02 02 bb 04 02 e8 02 00-cd 20 50 51 56 57 8b 37 ..;..h..m pqvw.
718e4:0120 8b
其中0100至0120是debug顯示的單元內容,左邊用十六進製制表示每個位元組,右邊用ascii字元表示每個位元組,·表示不可顯示的字元。這裡沒有指定段位址,d命令自動顯示ds段的內容。如果只指定首位址,則顯示從首位址開始的80個位元組的內容。如果完全沒有指定位址,則顯示上乙個d命令顯示的最後乙個單元後的內容。
2、修改儲存單元內容的命令有兩種。
·輸入命令e(enter),有兩種格式如下:第一種格式可以用給定的內容表來替代指定範圍的儲存單元內容。命令格式為:
-e address[list]
例如,-e ds:100 f3'xyz'8d
其中f3,'x','y','z'和各佔乙個位元組,該命令可以用這五個位元組來替代儲存單元ds:0100到0104的原先的內容。
第二種格式則是採用逐個單元相繼修改的方法。命令格式為:
-e address
例如,-e ds:100
則可能顯示為:
18e4:0100 89.-
如果需要把該單元的內容修改為78,則使用者可以直接鍵入78,再按「空格」鍵可接著顯示下乙個單元的內容,如下:
18e4:0100 89.78 1b.-
這樣,使用者可以不斷修改相繼單元的內容,直到用enter鍵結束該命令為止。
·填寫命令f(fill),其格式為:
-f range list
例如:-f 4ba:0100 5 f3'xyz'8d
使04ba:0100~0104單元包含指定的五個位元組的內容。如果list中的位元組數超過指定的範圍,則忽略超過的項;如果list的位元組數小於指定的範圍,則重複使用list填入,直到填滿指定的所有單元為止。
3)檢查和修改暫存器內容的命令r(register),它有三種格式如下:
·顯示cpu內所有暫存器內容和標誌位狀態,其格式為:
-r例如,-r
ax=0000 bx=0000 cx=010a dx=0000 sp=fffe bp=0000 si=0000 di=0000
ds=18e4 es=18e4 ss=18e4 cs=18e4 ip=0100 nv up di pl nz na po nc
18e4:0100 c70604023801 mov word ptr [0204],0138 ds:0204=0000
·顯示和修改某個暫存器內容,其格式為:
-r register name
例如,鍵入
-r ax
系統將響應如下:
ax f1f4
:即ax暫存器的當前內容為f1f4,如不修改則按enter鍵,否則,可鍵入欲修改的內容,如:
-r bx
bx 0369
:059f
則把bx暫存器的內容修改為059f。
·顯示和修改標誌位狀態,命令格式為:
-rf系統將響應,如:
ov dn ei ng zr ac pe cy-
此時,如不修改其內容可按enter鍵,否則,可鍵入欲修改的內容,如:
ov dn ei ng zr ac pe cy-ponzdinv
即可,可見鍵入的順序可以是任意的。
4)執行命令g,其格式為:
-g[=address1][address2[address3…]]
其中,位址1指定了執行的起始位址,如不指定則從當前的cs:ip開始執行。後面的位址均為斷點位址,當指令執行到斷點時,就停止執行並顯示當前所有暫存器及標誌位的內容,和下一條將要執行的指令。
5)跟蹤命令t(trace),有兩種格式:
·逐條指令跟蹤
-t [=address]
從指定位址起執行一條指令後停下來,顯示所有暫存器內容及標誌位的值。如未指定位址則從當前的cs:ip開始執行。
·多條指令跟蹤
-t [=address][value]
從指定位址起執行n條指令後停下來,n由value指定。
6)彙編命令a(assemble),其格式為:
-a[address]
該命令允許鍵入組合語言語句,並能把它們彙編成機器**,相繼地存放在從指定位址開始的儲存區中。必須注意:debug把鍵入的數字均看成十六進製制數,所以如要鍵入十進位制數,則其後應加以說明,如100d。
7)反彙編命令u(unassemble)有兩種格式。
·從指定位址開始,反彙編32個位元組,其格式為:
-u[address]
例如:-u100
18e4:0100 c70604023801 mov word ptr[0204],0138
18e4:0106 c70606020002 mov word ptr[0206],0200
18e4:010c c70606020202 mov word ptr[0208],0202
18e4:0112 bbo4o2 mov bx,0204
18e4:0115 e80200 call 011a
18e4:0118 cd20 int 20
18e4:011a 50 push ax
18e4:011b 51 push cx
18e4:011c 56 push si
18e4:011d 57 push di
18e4:011e 8b37 mov si,[bx]
如果位址被省略,則從上乙個u命令的最後一條指令的下乙個單元開始顯示32個位元組。
·對指定範圍內的儲存單元進行反彙編,格式為:
-u[range]
例如:-u100 10c
18e4:0100 c70604023801 mov word ptr[0204],0138
18e4:0106 c70606020002 mov word ptr[0206],0200
18e4:010c c70606020202 mov word ptr[0208],0202
或-u100 112
18e4:0100 c70604023801 mov word ptr[0204],0138
18e4:0106 c70606020002 mov word ptr[0206],0200
18e4:010c c70606020202 mov word ptr[0208],0202
可見這兩種格式是等效的。
8)命名命令n(name),其格式為:
-n filespecs [filespecs]
命令把兩個檔案識別符號格式化在cs:5ch和cs:6ch的兩個檔案控制塊中,以便在其後用l或w命令把檔案裝入存檔。filespecs的格式可以是:
[d:][path] filename[.ext]
例如,-n myprog-l-
可把檔案myprog裝入儲存器。
9)裝入命令(load),有兩種功能。
·把磁碟上指定扇區範圍的內容裝入到儲存器從指定位址開始的區域中。其格式為:
-l[address[drive sector sector]
·裝入指定檔案,其格式為:
-l[address]
此命令裝入已在cs:5ch中格式化了檔案控制塊所指定的檔案。如未指定位址,則裝入cs:0100開始的儲存區中。
10)寫命令w(write),有兩種功能。
·把資料寫入磁碟的指定扇區。其格式為:
-w address drive sector sector
·把資料寫入指定的檔案中。其格式為:
-w[address]
此命令把指定的儲存區中的資料寫入由cs:5ch處的檔案控制塊所指定的檔案中。如未指定位址則資料從cs:0100開始。要寫入檔案的位元組數應先放入bx和cx中。
11)退出debug命令q(quit),其格式為:
-q它退出debug,返回dos。本命令並無存檔功能,如需存檔應先使用w命令。
DEBUG的引數說明
debug是為組合語言設計的一種高度工具,它通過單步 設定斷點等方式為組合語言程式設計師提供了非常有效的除錯手段。一 debug程式的呼叫 在dos的提示符下,可鍵入命令 c debug d path filename ext parm1 parm2 其中,檔名是被除錯檔案的名字。如使用者鍵入檔案,...
Cache control引數說明
header中的cache control引數說明 php編碼 網頁的快取是由http訊息頭中的 cache control 來控制的,常見的取值有private no cache max age must revalidate等,預設為private。其作用根據不同的重新瀏覽方式分為以下幾種情況 ...
nmap引數說明
目標規範 可以通過主機名,ip位址,網路等 例 scanme.nmap.org,dream4.org 24,192.168.0.1 10.0.0 255.1 254 il 從指定檔案獲取主機或網路 ir 隨機選擇主機,0 不限制掃瞄主機數 exclude 排除指定主機或網路 excludefile ...