⑴ 路由器的debug命令
1. debug
打開或關閉系統調試開關。
[no]debug{all|{protocol-name|function-name}[debug-option ]}
【參數說明】
all表示打開或關閉全部調試開關。
【預設情況】
系統預設關閉全部調試開關。
【命令模式】
特權用戶模式
【使用指南】
R>Quidway(R)系列路由器提供種類豐富的調試功能,一般用於技術支持人員和資深維護人員進行網路故障診斷。
由於打開調試開關,會產生大量的調試信息,導致系統效率的降低,尤其在執行debugall命令打開全部調試開關後,可能會引起網路系統癱瘓,建議不要使用debug all命令,而nodebugall命令卻給用戶帶來極大方便,可以一次關閉全部調試開關,不必去一一關閉。
【舉例】
打開IPPacket調試開關。
Quidway#debugippacket
IPpacketdebuggingswitchison.
再看看http://cisco.chinaitlab.com/trouble/386402.html個吧
⑵ 怎麼用Dos命令進入debug
D:debug是我debug.exe所在的文件夾路徑
C: 不唯一,你想把D:debug映射到哪個盤都可以,只要後續轉換該盤為當前盤就可以
⑶ debug命令有哪些
DEBUG
DOS中的Debug:[
是為DOS提供的有力的偵錯,跟蹤程序運行,檢查系統數據的工具程序,它是在字元界面下以單字元命令方式工作。要很好地使用它必須具備一定的匯編程序設計和硬體基本知識的能力,當然,它為匯編語言程序員提供了有效的調試手段,它的功能包括以下幾個方面。�
1. 直接輸入、更改、跟蹤、運行匯鎇栽闖絛潁華
2. 觀察操作系統的內容;�
3. 查看ROM BIOS的內容;�
4. 觀察更改RAM內部的設置值;�
5. 以扇區或文件的方式讀寫軟盤數據。�
在DEBUG中地址用段地址與段內地址來表示,而段地址可以明確地指出來,也可以用一個段指示器(段寄存器)來代表,用段寄存器表示時,其段地址就是此寄存器的內含值:�
如:用段地址和段內地址表示FOFF:0100�
用段寄存器和段內地址表示CSF:0100←CS指向F000�
下面列出了常用命令用法。
-A 地址 從指定地址開始編寫小匯編程序,按兩個回車鍵結束編輯
-U 地址 從指定地址開始反匯編32位元組的機器指令,預設地址則從上一U命令繼續
-D 始址 終址 以16進制/Asc字元對照方式顯示指定內存范圍的數據,每行顯示10H個位元組
-E 地址 值表 用給出的值表(空格分隔)替換指定地址開始的內存單元,例:-E 100 'v' 1F 'hello'
-N 文件名 為後續的L/W命令約定所操作的文件名
-L 地址 將N命令所指定文件的內容讀入到指定內存位置。另,邏輯卷扇區直接讀:-L 地址 邏卷號 起始邏扇號 扇數
-W 地址 將BX-CX個位元組的內存數據寫入N命令指定的文件中。另,邏輯卷扇區直接寫:-W 地址 邏卷號 起始邏扇號 扇數
-R 寄存器名 顯示並允許修改指定寄存器的值
-G=始址 終址 執行指定內存中的機器指令程序
-T=地址 單步執行機器指令,預設地址則從上一T命令繼續。另,繼續跟蹤m條指令:-T m
讀取c:卷的引導扇區,並保存到Boot.1文件中,並簡單分析引導程序的前面幾條指令:
-L 1000 2 0 1
-N boot.1
-R bx ;輸入0000
-R cx ;輸入0200
-W 1000
-U 1000
讀取第一個硬碟上的主引導扇區,並保存到MB.1文件中,在屏幕上顯示硬碟分區表數據:
-A 100
yyyy:0100 mov dx,0080
yyyy:01xx mov cx,0001
yyyy:01xx mov ax,yyyy
yyyy:01xx mov es,ax
yyyy:01xx mov bx,1000
yyyy:01xx mov ax,0201
yyyy:01xx int 13
yyyy:01zz nop
-G=yyyy:0100 01zz
-N mb.1
-R bx ;輸入0000
-R cx ;輸入0200
-W 1000
-D 11be 11ff
Debugger
"Debugger"這個詞按它的英文字面意思來講是這樣一種「裝置」(-er),這種裝置可以「消除」(De-)「系統中的缺陷」(bug)。然而事實上,迄今為止我們經常使用到的"Debugger"只是用來幫助我們進行Debug的工具,"Debugger"本身不能自動完成"Debug"。我們可以回想一下我們是如何進行Debug的,在進行Debug的過程中,我們通過Debugger來完成以下工作:
(1)監視「Debug對象」的狀態;
(2)控制「Debug對象」的運行;
這些工作可以為「發現Debug對象中存在的問題」以及「對解決問題方案的檢驗」提供有用的信息。
監控工作有時只需要由軟體就可以完成,有時不僅需要軟體支持,還需要硬體的支持。
Debugger除了被用來Debug,還被用來幫助我們理解「Debug的對象」內部結構,因為我們用到的Debugger能夠完成對「Debug對象」的監控工作,在監控的過程中可以獲取「Debug對象」動態特徵的信息,這對我們理解其結構是非常有用的。
⑷ debug命令!debug命令!
你用的debug只是一個容器,用於你在裡面模擬用行ms-dos程序,而32位的windows下的內存結構比你在debug里看到的復雜,真正的中斷向量表並沒有改變。
⑸ debug命令的用法和介紹
要學習使用Debug 最好還是學一下匯編
⑹ debug命令怎麼用是干什麼的
DEBUG是一個DOS實用程序,是供程序員使用的程序調試工具,可以用它檢查內存中任何地方的位元組以及修改任何地方的位元組。它可以用於逐指令執行某個程序以驗證程序運行的正確性,也可以追蹤執行過程、比較一個指令執行前後的值以及比較與移動內存中數據的范圍,讀寫文件與磁碟扇區。
它的功能包括以下幾個方面。
⒈ 直接輸入,更改,跟蹤,運行匯編語言源程序;
⒉ 觀察操作系統的內容;
3.查看ROM BIOS的內容;
⒋觀察更改RAM內部的設置值;
⒌以扇區或文件的方式讀寫軟盤數據。
A 匯編命令
功能: 將指令直接匯編成機器碼輸入到內存中。
說明: 用於小段程序的匯編及修改目標程序,所有輸入的數字均採用十六進制, 用戶裝入內存的匯編語句是連續存放的,若沒有指定地址,並且前面沒有使用匯編命令,該語句被匯編到 CS:0100區域。
例A:>DEBUG
-a 0100
08F1:0100 MOV AH,09
08F1:0102 MOV DX,109
08F1:0105 INT 21H;
08F1:0107 INT 21H;<-XP下運行cmd debug時,應該是INT 20H,21H會出遇無效指令錯誤
08F1:0109 db 'May I help you $'
08F1:0115←離開a狀態
-g ←運行
May I help you 運行結果
Program terminated normally表示運行正常
C比較命令
功能: 比較兩內存區域中的內容是否相同,若不同則顯示其地址和內容。
如:C4000:0 3F 100
就是用來比較4000:0000-4000:003F與DS:0100-DS:013F之間的內容:其顯示格式如下:
內存地址1內含值1內含值2內存地址2
例:比較4000:0 3F 100內容的差異
-C4000:0 3F 100
4000:0000 64 43 08F1:0100
4000:0001 3E 69 08F1:0101 顯示內容的差異處
4000:0002 78 FF 08F1:0102
……………………………………
如果要比較的范圍在DS內,則段地址不必指出:
如:-C 0 4 100;比較DS:0---DS:4與DS:100---DS:104
C命令的另一種格式如下:C地址1 L 長度 地址2
如:-C000:0 L4 0;由0000:0與與DS:0開始比較它同-C0000:0 3 0命令相等,顯示結果如下:
0000:0000 8A C0 08F1:0000
0000:0001 10 20 08F1:0001 它們都比較4個位元組
0000:0002 1C 00 08F1:0002
0000:0003 49 7F 08F1:0003
轉儲命令
* D[地址] 或D[起始地址][目的地址] 轉儲命令
功能: 以內存映象方式顯示內存中的信息。
說明: 轉儲用左右兩部分顯示內存映象內容,左邊以十六進制,右邊以ASCⅡ字元顯示,所有不可列印字元用句號(。)表示。每行顯示16個位元組的內容,在第八和第九個位元組之間有一個連字元 - 此命令隱含的段地址為DS的值。若未指定起始地址,則D命令從顯示的最後一個單元的下一個單元開始顯示,若以前沒有使用給D命令, 則從初使化的段寄存器的內容,加上地址偏移量 0100H 開始顯示。
例:-d10,4f即為顯示DS:4f的內容在D命令中如不指出段地址,則其默認為DS段。
如指明段地址,則從指明的段地址列出指定的范圍
如:-dfff:00:0f
我們也可以指定長度來列出所需要內存內容
如:-d 100 L20即為顯示由DS:100-DS:11F的內容,共20H個位元組:
* E[地址] [位元組串) 修改內存命令
功能: 從指定的地址開始修改內存值。
格式:E起始地址[數據行]
⑴用給定內容代替指定范圍的單元內容
-E地址 內容表
例:-E100 41 42 43 44 48 47 46 45
-D 100,L08
08F1:0100 41 42 43 44 48 47 46 45 ABCDHGFE…
⑵逐個內存內容
例:-E 100:
08F1:0100 76 42 :42是操作員鍵入
此命令是將原100號內存內容76修改為42,用D命令可察看。
* F[地址范圍] [位元組或位元組串] 填寫命令
功能: 將要填寫的位元組或位元組串填入由地址范圍指定的存儲器中。
例:-f100 120 61 62 63 64
-d100 11f
08F1:0100 61 62 63 64 61 62 63 64 -61 62 63 64 61 62 63 abcd abcd abcd abcd
08F1:0110 13 67 98 E3 C8 2E B3 B6 -03 21 AC 19 3121 4E 96 g……1…
如果數據行超出指定的范圍,則填不下的數值會被忽略。
例:-f 100 107 41 43 43 44 45 46 47 48 49 4A 4B 4C 4D -d 100,lof
08F1:0100 41 42 43 44 45 46 47 64 -61 62 63 64 ABCDEFGdabcdabcd
由上例可看出,超出范圍的數據被忽略
另外,F和E命令都可填入字元串:
如:-F 100 105 "MSDOS"
-d 100 l0f
08F1:0100 4D 53 44 4F 53 46 47 64 -61 62 63 64 MS DOS FGabcd abcd
G執行命令
功能: 執行正在調試的程序,當達到斷點時停止執行, 並且顯示寄存器標志和下一條要執行的命令。
說明: 如果沒有指定起始地址,那麼當前指令地址由CS,IP寄存器的內容來決定,如果用戶指定起始地址就從指定的起始地址開始執行。如果指定斷點,當指令到達指令地址時停止執行,並顯示各寄存器標志位的內容和下一條要執行的命令,最多允許用戶設定10個斷點。
例:A:\>debug tan.exe
-u:反編譯成匯編語言程碼
…………
. .
-g 100 指定中斷點
Program terminated normally:
另外:我們在DEBUG下可運行一個文件.EXE
如:A:\>debug tan.exe
-g
即可開始運行此程序,和在DOS下完全一樣:
* H[數值][數值] 十六進制算術運算命令
功能: 分別顯示兩個十六進制數相加的和以及第一個數減去第二個數的差。
說明: 替用戶完成簡單的十六進制數的運算。
例:-h4538 5623
9B5B EF15
I命令
功能: 從指定的埠輸入並顯示(用十六進制)的一個位元組。
例:-i70
F9;顯示70埠的內容為F9
I命令可由80X86的64K個埠取數據
L命令
功能: 將一個文件或盤的絕對扇區裝入存儲器。
說明: 單個L命令能夠裝入的最大扇區數是 80H,其中盤號 0,1,2,3……分別代表 A,B,C,……出現讀盤錯,顯示錯誤信息。
⑴格式1.L裝入地址 驅動器名 起始扇區/扇區數
這種方式可把磁碟上指定扇區范圍的內容裝入到存儲器從指定地址開始的區域中,在此外扇區編號引用邏輯/扇區的方式。
例:-L 100 0 01,將A驅的0扇區裝至CS:100上
-d 100 10f
08F1:0100 EB 3C 90 3C 53 44 4F 53 -36 2E 32 32 02 01 01 00.L,MSDOS 6.22……
⑵格式2:L裝入地址
這種方式可把指定文件裝入內存,裝入的文件可在進入DEBUG時指定亦可用N命令建立,格式為-n文件名:
例1 DEBUG tan.pas
-L 100
例2 DEBUG
-n tan.pas
-L 100
須知:L命令只能讀取邏輯扇區,不能讀取硬碟分區表
L命令中所用的磁碟代碼A=00,B=01,C=02……
⑺ 求debug命令詳解
DEBUG的常用命令
(1)匯編命令 A
格式:A[起始地址]
功能:將輸入源程序的指令匯編成目標代碼並從指定地址單元開始存放。若預設
起始地址,則從當前CS:100 地址開始存放。A 命令按行匯編,主要是用於小段
程序的匯編或對目標程序的修改。
(2)反匯編命令 U
格式1:U[起始地址]
格式2:U[起始地址][結束地址|位元組數]
功能:格式1 從指定起始地址處開始將32 個位元組的目標代碼轉換成匯編指令形
式,預設起始地址,則從當前地址CS:IP 開始。
格式2 將指定范圍的內存單元中的目標代碼轉換成匯編指令。
(3)顯示、修改寄存器命令 R
格式:R[寄存器名]
功能:若給出寄存器名,則顯示該寄存器的內容並可進行修改。預設寄存器名,
則按以下格式顯示所有寄存器的內容及當前值(不能修改)。
AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000
DI=0000 DS=3000 ES=23A0 CS=138E IP=0000
NV UP DI PL NZ NA PO NC
138E:0000 MOV AX,1234
-R AX ;輸入命令
AX 0014 ;顯示AX 的內容
: ;供修改,不修改按回車。
若對標志寄存器進行修改,輸入:-RF
屏幕顯示如下信息,分別表示OF、DF、IF、SF、ZF、AF、PF、CF 的狀態。
NV UP DI PL NZ NA PO NC
不修改按回車鍵。要修改需個別輸入一個或多個此標志的相反值,再按回車鍵。
R 命令只能顯示、修改16 位寄存器。
(4)顯示存儲單元命令 D
格式1:D[起始地址]
格式2:D[起始地址][結束地址|位元組數]
功能:格式1 從起始地址開始按十六進制顯示80H 個單元的內容,每行16 個單
元,共8 行,每行右邊顯示16 個單元的ASCII 碼,不可顯示的ASCII 碼則顯示
「·」。格式2 顯示指定范圍內存儲單元的內容,其他顯示方式與格式1 一樣。
如果預設起始地址或地址范圍,則從當前的地址開始按格式1 顯示。
例如: -D 200 ;表示從DS:0200H 開始顯示128 個單元內容
-D 100 120 ;表示顯示DS:0100-DS:0120 單元的內容
說明:在DEBUG 中,地址表示方式有如下形式:
段寄存器名:相對地址,如:DS:100
段基值:偏移地址(相對地址),如:23A0:1500
(5)修改存儲單元命令 E
格式1:E[起始地址] [內容表]
格式2:E[地址]
功能:格式1 按內容表的內容修改從起始地址開始的多個存儲單元內容,即用內
容表指定的內容來代替存儲單元當前內容。
例如:—E DS:0100 'VAR' 12 34
表示從DS:0100 為起始單元的連續五個位元組單元內容依次被修改為
'V'、'A'、'R'、12H、34H。
格式2 是逐個修改指定地址單元的當前內容。
如:—E DS:0010
156F:0010 41.5F
其中156F:0010 單元原來的值是41H,5FH 為輸入的修改值。若只修改一個單元
的內容,這時按回車鍵即可;若還想繼續修改下一個單元內容,此時應按空格鍵,
就顯示下一個單元的內容,需修改就鍵入新的內容,不修改再按空格跳過,如此
重復直到修改完畢,按回車鍵返回DEBUG「-」提示符。如果在修改過程中,將
空格鍵換成按「-」鍵,則表示可以修改前一個單元的內容。
(6)運行命令 G
格式:G[=起始地址][第一斷點地址[第二斷點地址……]]
功能:CPU 從指定起始地址開始執行,依次在第一、第二等斷點處中斷。若預設
起始地址,則從當前CS:IP 指示地址開始執行一條指令。最多可設置10 個斷點。
(7)跟蹤命令 T
格式:T[起始地址][正整數]
功能:從指定地址開始執行『正整數』條指令,若預設『正整數』,表示執行一
條指令,若兩項都預設,表示從當前CS:IP 指示地址開始執行一條指令。
(8)指定文件命令 N
格式:N<文件名或擴展名>
功能:指定即將調入內存或從內存寫入磁碟的文件名。該命令應該用在L 命令和
W 命令之前。
(9)裝入命令 L
格式1:L[起始地址][盤符號][扇區號][扇區數]
格式2:L[起始地址]
功能:格式1 根據盤符號,將指定扇區的內容裝入到指定起始地址的存儲區中。
格式2 將N 命令指出的文件裝入到指定起始地址的存儲區中,若省略起始地址,
則裝入到CS:100 處或按原來文件定位約定裝入到相應位置。
(10)寫磁碟命令 W
格式1:W<起始地址>[驅動器號]<起始扇區><扇區數>
格式2:W[起始地址]
功能:格式1 把指定地址開始的內容數據寫到磁碟上指定的扇區中。
格式2 將起始地址的BX×10000H+CX 個位元組內容存放到由N 命令指定的文件中。
在格式2 的W 命令之前,除用N 命令指定存檔的文件名外,還必須將要寫的位元組
數用R 命令送入BX 和CX 中。
(11)退出命令 Q
格式:Q
功能:退出DEBUG,返回到操作系統。
以上介紹的是DEBUG 常用命令,其他命令請參考有關書籍。
⑻ Debug都有哪些命令啊
DOS命令之DEBUG命令詳解
關鍵詞: DEBUG命令
DEBUG是DOS中的一個外部命令,從DOS 1.0起就帶有此命令,因此可見此命令的重要性了。雖然此命令的功能非常強大,可以解決許多問題,可是對許多人來說,尤其是初學者來說,卻非常不易掌握。因此,現將DEBUG的命令詳細介紹一番,以讓大家知道它的使用。
Debug:A(匯編)
直接將 8086/8087/8088 記憶碼合並到內存。
該命令從匯編語言語句創建可執行的機器碼。所有數值都是十六進制格式,必須按一到四個字元輸入這些數值。在引用的操作代碼(操作碼)前指定前綴記憶碼。
a [address]
參數
address
指定鍵入匯編語言指令的位置。對 address 使用十六進制值,並鍵入不以「h」字元結尾的每個值。如果不指定地址,a 將在它上次停止處開始匯編。
有關將數據輸入到指定位元組中的信息,請單擊「相關主題」列表中的 Debug E(鍵入)。
有關反匯編位元組的信息,請單擊「相關主題」列表中的 Debug U(反匯編)。
說明
使用記憶碼
段的替代記憶碼為 cs:、ds:、es: 和 ss:。遠程返回的記憶碼是 retf。字元串處理的記憶碼必須明確聲明字元串大小。例如,使用 movsw 可以移動 16 位的字串,使用 movsb 可以移動 8 位位元組串。
匯編跳轉和調用
匯編程序根據位元組替換自動將短、近和遠的跳轉及調用匯編到目標地址。通過使用 near 或 far 前綴可以替代這樣的跳轉或調用,如下例所示:
-a0100:0500
0100:0500 jmp 502 ; a 2-byte short jump
0100:0502 jmp near 505 ; a 3-byte near jump
0100:0505 jmp far 50a ; a 5-byte far jump
可以將 near 前綴縮寫為 ne。
區分字和位元組內存位置
當某個操作數可以引用某個字內存位置或者位元組內存位置時,必須用前綴 word ptr 或者前綴 byte ptr 指定數據類型。可接受的縮寫分別是 wo 和 by。以下範例顯示兩種格式:
dec wo [si]
neg byte ptr [128]
指定操作數
Debug 使用包括在中括弧 ([ ]) 的操作數引用內存地址的習慣用法。這是因為另一方面 Debug 不能區分立即操作數和內存地址的操作數。以下範例顯示兩種格式:
mov ax,21 ; load AX with 21h
mov ax,[21] ; load AX with the
; contents of
; memory location 21h
使用偽指令
使用 a 命令提供兩個常用的偽指令:db 操作碼,將位元組值直接匯編到內存,dw 操作碼,將字值直接匯編到內存。以下是兩個偽指令的範例:
db 1,2,3,4,"THIS IS AN EXAMPLE"
db 'THIS IS A QUOTATION MARK:"'
db "THIS IS A QUOTATION MARK:'"
dw 1000,2000,3000,"BACH"
範例
a 命令支持所有形式的間接注冊命令,如下例所示:
add bx,34[bp+2].[si-1]
pop [bp+di]
push [si] )
還支持所有操作碼同義詞,如下例所示:
loopz 100
loope 100
ja 200
jnbe 200
對於 8087 操作碼,必須指定 wait 或 fwait 前綴,如下例所示:
fwait fadd st,st(3) ; this line assembles
; an fwait prefix
Debug:C(比較)
比較內存的兩個部分。
c range address
參數
range
指定要比較的內存第一個區域的起始和結束地址,或起始地址和長度。有關有效的 range 值的信息,請單擊「相關主題」列表中的「Debug 說明」。
address
指定要比較的第二個內存區域的起始地址。有關有效 address 值的信息,請單擊「相關主題」列表中的「Debug 說明」。
說明
如果 range 和 address 內存區域相同,Debug 將不顯示任何內容而直接返回到 Debug 提示符。如果有差異,Debug 將按如下格式顯示:
address1 byte1 byte2 addess2
範例
以下命令具有相同效果:
c100,10f 300
c100l10 300
每個命令都對 100h 到 10Fh 的內存數據塊與 300h 到 30Fh 的內存數據塊進行比較。
Debug 響應前面的命令並顯示如下信息(假定 DS = 197F):
197F:0100 4D E4 197F:0300
197F:0101 67 99 197F:0301
197F:0102 A3 27 197F:0302
197F:0103 35 F3 197F:0303
197F:0104 97 BD 197F:0304
197F:0105 04 35 197F:0305
197F:0107 76 71 197F:0307
197F:0108 E6 11 197F:0308
197F:0109 19 2C 197F:0309
197F:010A 80 0A 197F:030A
197F:010B 36 7F 197F:030B
197F:010C BE 22 197F:030C
197F:010D 83 93 197F:030D
197F:010E 49 77 197F:030E
197F:010F 4F 8A 197F:030F
注意列表中缺少地址 197F:0106 和 197F:0306。這表明那些地址中的值是相同的。
Debug:D(轉儲)
顯示一定范圍內存地址的內容。
d [range]
參數
range
指定要顯示其內容的內存區域的起始和結束地址,或起始地址和長度。有關有效的 range 值的信息,請單擊「相關主題」列表中的「Debug 說明」。如果不指定 range,Debug 程序將從以前 d 命令中所指定的地址范圍的末尾開始顯示 128 個位元組的內容。
有關顯示寄存器內容的信息,請單擊「相關主題」列表中的 Debug R(寄存器)。
說明
當使用 d 命令時,Debug 以兩個部分顯示內存內容:十六進制部分(每個位元組的值都用十六進制格式表示)和 ASCII 碼部分(每個位元組的值都用 ASCII 碼字元表示)。每個非列印字元在顯示的 ASCII 部分由句號 (.) 表示。每個顯示行顯示 16 位元組的內容,第 8 位元組和第 9 位元組之間有一個連字元。每個顯示行從 16 位元組的邊界上開始。
範例
假定鍵入以下命令:
dcs:100 10f
Debug 按以下格式顯示範圍中的內容:
04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 TOM.SAWYER......
如果在沒有參數的情況下鍵入 d 命令,Debug 按以前範例中所描述的內容來編排顯示格式。顯示的每行以比前一行的地址大 16 個位元組(如果是顯示 40 列的屏幕,則為 8 個位元組)的地址開頭。
對於後面鍵入的每個不帶參數的 d 命令,Debug 將緊接在最後顯示的命令後立即顯示位元組內容。
如果鍵入以下命令,Debug 將從 CS:100 開始顯示 20h 個位元組的內容:
dcs:100 l 20
如果鍵入以下命令,Debug 將顯示範圍從 CS 段的 100h 到 115h 中所有位元組的內容:
dcs:100 115
Debug:E(鍵入)
將數據輸入到內存中指定的地址。
可以按十六進制或 ASCII 格式鍵入數據。以前存儲在指定位置的任何數據全部丟失。
e address [list]
參數
address
指定輸入數據的第一個內存位置。
list
指定要輸入到內存的連續位元組中的數據。
有關集成記憶碼的信息,請單擊「相關主題」列表中的 Debug A(匯編)。
有關顯示內存部分內容的信息,請單擊「相關主題」列表中的 Debug D (轉儲)。
說明
使用 address 參數
如果在沒有指定可選的 list 參數的值情況下指定 address 的值,Debug 將顯示地址和內容,在下一行重復地址,並等待您的輸入。此時,您可以執行下列操作之一:
替換位元組值。為此,請在當前值後鍵入新值。如果您鍵入的值不是有效的十六進制值,或該值包含兩個以上的數字,則 Debug 不會回顯無效或額外的字元。
進入下一個位元組。為此,請按 SPACEBAR(空格鍵)。要更改該位元組中的值,請在當前值後鍵入新值。如果按 SPACEBAR(空格鍵)時,移動超過了 8 位界限,Debug 程序將顯示新的一行並在行首顯示新地址。
返回到前一個位元組。為此,請按 HYPHEN 鍵 (-)。可以反復按 HYPHEN 鍵 (-) 向後移動超過多個位元組。在按 HYPHEN 時,Debug 開始新行並顯示當前地址和位元組值。
停止執行 e 命令。為此,請按 ENTER 鍵。在任何位元組位置都可以按 ENTER。
使用 list 參數
如果指定 list 參數的值,隨後的 e 命令將使用列表中的值替換現有的位元組值。如果發生錯誤,將不更改任何位元組值。
List 值可以是十六進制位元組或字元串。使用空格、逗號或製表符來分隔值。必須將字元串包括在單或雙引號中。
範例
假定鍵入以下命令:
ecs:100
Debug 按下面的格式顯示第一個位元組的內容:
04BA:0100 EB.
要將該值更改為 41,請在插入點鍵入 41,如下所示:
04BA:0100 EB.41_
可以用一個 e 命令鍵入連續的位元組值。在鍵入新值後按 SPACEBAR(空格鍵),而不是按 ENTER 鍵。Debug 顯示下一個值。在此範例中,如果按三次 SPACEBAR(空格鍵),Debug 將顯示下面的值:
04BA:0100 EB.41 10. 00. BC._
要將十六進制值 BC 更改為 42,請在插入點鍵入 42,如下所示:
04BA:0100 EB.41 10. 00. BC.42_
假定決定值 10 應該是 6F。要糾正該值,請按 HYPHEN 鍵兩次以返回到地址 0101(值 10)。Debug 顯示以下內容:
04BA:0100 EB.41 10. 00. BC.42-
04BA:0102 00.-
04BA:0101 10._
在插入點鍵入 6f 更改值,如下所示:
04BA:0101 10.6f_
按 ENTER 停止 e 命令並返回到 Debug 提示符下。
以下是字元串項的範例:
eds:100 "This is the text example"
該字元串將從 DS:100 開始填充 24 個位元組
Debug:F(填充)
使用指定的值填充指定內存區域中的地址。
可以指定十六進制或 ASCII 格式表示的數據。任何以前存儲在指定位置的數據將會丟失。
f range list
參數
range
指定要填充內存區域的起始和結束地址,或起始地址和長度。關於有效的 range 值的信息,請單擊「相關主題」列表中的「Debug 說明」。
list
指定要輸入的數據。List 可以由十六進制數或引號包括起來的字元串組成。
說明
使用 range 參數
如果 range 包含的位元組數比 list 中的數值大,Debug 將在 list 中反復指派值,直到 range 中的所有位元組全部填充。
如果在 range 中的任何內存損壞或不存在,Debug 將顯示錯誤消息並停止 f 命令。
使用 list 參數
如果 list 包含的數值多於 range 中的位元組數,Debug 將忽略 list 中額外的值。
範例
假定鍵入以下命令:
f04ba:100l100 42 45 52 54 41
作為響應,Debug 使用指定的值填充從 04BA:100 到 04BA:1FF 的內存位置。Debug 重復這五個值直到 100h 個位元組全部填滿為止。
Debug:G(轉向)
運行當前在內存中的程序。
g [=address] [breakpoints]
參數
=address
指定當前在內存中要開始執行的程序地址。如果不指定 address,Windows 2000 將從 CS:IP 寄存器中的當前地址開始執行程序。
breakpoints
指定可以設置為 g 命令的部分的 1 到 10 個臨時斷點。
有關執行循環、重復的字元串指令、軟體中斷或子程序的信息,請單擊「相關主題」列表中的 Debug P(執行)。
有關執行指令的信息,請單擊「相關主題」列表中的 Debug T(跟蹤)。
Debug:H(十六進制)
對指定的兩個參數執行十六進制運算。
h value1 value2
參數
value1
代表從 0 到 FFFFh 范圍內的任何十六進制數字。
value2
代表從 0 到 FFFFh 范圍內第二個十六進制數字。
說明
Debug 首先將指定的兩個參數相加,然後從第一個參數中減去第二個參數。這些計算的結果顯示在一行中:先計算和,然後計算差。
範例
假定鍵入以下命令:
h19f 10a
Debug 執行運算並顯示以下結果。
02A9 0095
Debug:I(輸入)
從指定的埠讀取並顯示一個位元組值。
i port
參數
port
按地址指定輸入埠。地址可以是 16 位的值。
有關將位元組值發送到輸出埠的信息,請單擊「相關主題」列表中的 Debug O(輸出)。
範例
假定鍵入以下命令:
i2f8
同時假定埠的位元組值是 42h。Debug 讀取該位元組,並將其值顯示如下:
42
Debug:L(載入)
將某個文件或特定磁碟扇區的內容載入到內存。
要從磁碟文件載入 BX:CX 寄存器中指定的位元組數內容,請使用以下語法:
l [address]
要略過 Windows 2000 文件系統並直接載入特定的扇區,請使用以下語法:
l address drive start number
參數
address
指定要在其中載入文件或扇區內容的內存位置。如果不指定 address,Debug 將使用 CS 寄存器中的當前地址。
drive
指定包含讀取指定扇區的磁碟的驅動器。該值是數值型:0 = A, 1 = B, 2 = C 等。
start
指定要載入其內容的第一個扇區的十六進制數。
number
指定要載入其內容的連續扇區的十六進制數。只有要載入特定扇區的內容而不是載入 debug 命令行或最近的 Debug n(名稱)命令中指定的文件時,才能使用 drive、start 和 number 參數。
有關指定用於 l 命令的文件的信息,請單擊「相關主題」列表中的 Debug n(名稱)。
有關寫入調試到磁碟的文件的信息,請單擊「相關主題」列表中的 Debug w(寫入)。
注意
使用不帶參數的 l 命令
當使用不帶參數的 l 命令時,在 debug 命令行上指定的文件將載入到內存中,從地址 CS:100 開始。Debug 同時將 BX 和 CX 寄存器設置為載入的位元組數。如果不在 debug 命令行指定文件,所裝入的文件將是最近使用 n 命令經常指定的文件。
使用具有 address 參數的 1 命令
如果使用帶 address 參數的 l 命令,Debug 將從內存位置 address 開始載入文件或指定扇區的內容。
使用帶全部參數的 l 命令
如果使用帶所有參數的 l 命令,Debug 將載入指定磁碟扇區的內容而不是載入文件。
載入特定扇區的內容
指定范圍內的每個扇區均從 drive 讀取。Debug 從 start 開始載入,直到在 number 中指定的扇區數中的內容全部被載入。
載入 .exe 文件
Debug 忽略 .exe 文件的地址 address 參數。如果指定 .exe 文件,Debug 將文件重新定位到 .exe 文件的標題中指定的載入地址。在 .exe 文件被載入到內存前,標題自身從 .exe 文件脫離,因此磁碟上的 .exe 文件大小與內存中的不同。如果要檢查整個 .exe 文件,請使用不同的擴展名重命名文件。
打開十六進制文件
Debug 將具有 .hex 擴展名的文件認為十六進制格式文件。鍵入不帶參數的 l 命令,可以載入從十六進制文件中指定的地址處開始的十六進制文件。如果鍵入的 l 命令包含 address 參數,Debug 將把指定的地址加到在十六進制文件中找到的地址上,以確定起始地址。
範例
假定啟動 Debug 並鍵入以下命令:
nfile.com
現在可以鍵入 l 命令以載入 File.com。Debug 將載入文件並顯示 Debug 提示符。
假定需要從驅動器 C 將起始邏輯扇區為 15 (0Fh) 的 109 (6Dh) 個扇區的內容載入到起始地址為 04BA:0100 的內存中。為此,請鍵入以下命令:
l04ba:100 2 0f 6d
Debug:M(移動)
將一個內存塊中的內容復制到另一個內存塊中。
m range address
參數
range
指定要復制內容的內存區域的起始和結束地址,或起始地址和長度。
address
指定要將 range 內容復制到該位置的起始地址。
說明
復制操作對現有數據的影響
如果新數據沒有寫入正在被復制的數據塊中的地址,則源數據將保持不變。但是,如果目標塊已經包含數據(就象它在覆蓋副本操作中一樣),則將改寫該數據。(覆蓋復制操作是指那些目標數據塊部分內容覆蓋原數據塊部分內容的操作。)
執行覆蓋復制操作
m 命令執行目標地址的覆蓋復制操作,而不丟失數據。將改寫的地址內容首先復制。因此,如果將較高位地址的數據復制到較低位地址,則復制操作從原塊的最低位地址開始並向最高位地址進行。反之,如果要將數據從低地址復制到高地址,復制操作從原塊的最高地址開始,向最低地址進行。
範例
假定鍵入以下命令:
mcs:100 110 cs:500
Debug 首先將 CS:110 地址中的內容復制到地址 CS:510 中,然後將 CS:10F 地址中的內容復制到 CS:50F 中,如此操作直至將 CS:100 地址中的內容復制到地址 CS:500 中。要查看結果,請使用 Debug d(轉儲)命令,並使用 m 命令指定目標地址
Debug:N(名稱)
指定 Debug l(載入)或 w(寫入)命令的可執行文件的名稱,或者指定正在調試的可執行文件的參數。
n [drive:][path] filename
要指定測試的可執行文件的參數,請使用以下語法:
n file-parameters
參數
如果在沒有參數的情況下使用,則 n 命令清除當前規范。
[drive:][path] filename
指定要測試的可執行文件的位置和名稱。
file-parameters
為正在測試的可執行文件指定參數和開關。
有關將文件或指定磁碟扇區的內容載入到內存中的信息,請單擊「相關主題」列表中的 Debug L(載入)。
有關寫入調試到磁碟的文件的信息,請單擊「相關主題」列表中的 Debug W(寫入)。
說明
n 命令的兩個用途
可以按兩種方式使用 n 命令。首先,您可以使用它以指定後面的 l(載入)或 w(寫入)命令所使用的文件。如果在沒有命名所調試文件的情況下啟動 Debug,必須在使用 l 命令載入文件之前使用命令 nfilename。在 CS:5C 為文件控制塊 (FCB) 正確編排文件名的格式。其次,可以使用 n 命令指定被調試文件的命令行參數和開關。
⑼ DEBUG命令
assemble A [address]
匯編,可用來做簡單的匯編程序
例:A 從當前地址開始匯編
A 0100 從DS:100開始匯偏
compare C range address
比較兩段內存的內容
例:C100 L20 200 比較DS:100和DS:200開始的20H長內容的異同
mp D [range]
同時以機器碼和ASCII碼顯示內存內容
例:D 顯示從當前起80H 長的內存
D 0100 顯示從DS:0100起20H長的內存
enter E address [list]
編輯內存內容(機器碼)
例:E 編輯當前地址內存
E 0100 編輯DS:100
fill F range list
把指定內從送到指定地址中(慎用)
例:F 0100 L10 90 把DS:0100開始的10H位元組內容改成90
go G [=address] [addresses]
執行程序的全部或部分
例:G;從當前地址執行到程序結束
G=0100 從DS:0100執行到程序結束
G 0100 從當前地址執行到DS:0100
hex H value1 value2
計算兩人十六進制數的和/差
例:H 12 15 計算12,15的和/差
input I port
將某文件或某驅動器,某磁軌,某扇區裝入內存
例:L 重新裝入先前以裝入的文件
load L [address] [drive] [firstsector] [number]
move M range address
name N [pathname] [arglist]
output O port byte
proceed P [=address] [number]
quit Q
register R [register]
search S range list
trace T [=address] [value]
unassemble U [range]
write W [address] [drive] [firstsector] [number]
allocate expanded memory XA [#pages]
deallocate expanded memory XD [handle]
map expanded memory pages XM [Lpage] [Ppage] [handle]
display expanded memory status XS
⑽ debug命令的使用
在Windows 95/98的環境中,打開命令窗口的步驟為:點擊「開始」→「運行」,輸入「command」命令; 在WindowsXP及WIN7的環境中,打開命令窗口的步驟為:點擊「開始」→「運行」,輸入「cmd」命令;
2.啟動DEBUG
在命令窗口中啟動DEBUG,啟動命令一般為:DEBUG [文件名] [參數表]。其中:文件名指定被調試的文件,其包括名和後綴,參數表是被調試文件運行時所需要的參數。被調試的文件可以是系統中的任何文件,但通常它們的 後綴為.EXE或.COM。 當DEBUG啟動成功後,將顯示連接符「-」,這時,可輸入各種DEBUG命令。DEBUG中所有命令及其含義如DEBUG各命令功能說明表 所示。 關於使用命令的幾點說明:在提示符「-」下才能輸入命令,在按「回車」鍵後,該命令才開始執行命令是單個字母,命令和參數的大小寫可混合輸入可用F1、 F2、F3、Ins、Del、左移鍵、右移鍵等編輯鍵來編輯本行命令當命令出現語法錯誤時,將在出錯位置顯示「^ Error」可用Ctrl+C或Ctrl+Break來終止當前命令的執行,還可用Ctrl+S或Ctrl+Num Lock來暫停屏幕顯示(當連續不斷地顯示信息時)
以下通過實現十九個示例來熟悉DEBUG的命令集和基本的匯編指令。
R命令的使用
R命令作用:觀看和修改寄存器的值。
在提示符「-」下輸入以下命令:R。DEBUG將會顯示出當前所有寄存器和標志位的狀態。
接下來再輸入命令RCX。在提示符「:」後輸入100。該命令的作用是將寄存器CX的值設置為100(注意:DEBUG使用的是十六進制,這里的100相當於十進制的256。)
最後再執行R命令,觀看修改後的寄存器值。
H命令的使用
H命令作用:計算兩個十六進制數的和與差。
在提示符「–」下輸入以下命令:H 10 1。觀看命令執行結果。
運行結果的前一個數是計算出來的和,後一個數是計算出來的差。計算結果均用十六進制形式表示。