




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、debug用法大全(2006-5-19 9:21:00【評論】啟動Debug,它是可用于測試和調試MS-DOS 可執行文件的程序。Debug drive:path filename parameters參數drive:path filename指定要測試的可執行文件的位置和名稱。arameters指定要測試的可執行文件所需要的任何命令行信息。+說明使用Debug 命令但不指定要測試的文件如果使用沒有位置和文件名的Debug 命令,然后鍵入所有的Debug 命令以響應Debug 提示符,連字符(-。Debug 命令以下是Debug 命令列表:? 顯示Debug 命令列表。a 匯編8086/808
2、7/8088 記憶碼。c 比較內存的兩個部分。d 顯示部分內存的內容。e 從指定地址開始,將數據輸入到內存。f 使用指定值填充一段內存。g 運行在內存中的可執行文件。h 執行十六進制運算。i 顯示來自特定端口的1 字節值。l 將文件或磁盤扇區內容加載到內存。m 復制內存塊中的內容/n 為l 或w 命令指定文件,或者指定正在測試的文件的參數。o 向輸出端口發送1 個字節的值。p 執行循環、重復的字符串指令、軟件中斷或子例程。q 停止Debug 會話。r 顯示或改變一個或多個寄存器。s 在部分內存中搜索一個或多個字節值的模式。t 執行一條指令,然后顯示所有寄存器的內容、所有標志的狀態和Debug
3、下一步要執行的指令的解碼形式。u 反匯編字節并顯示相應的原語句。w 將被測試文件寫入磁盤。xa 分配擴展內存。xd 釋放擴展內存。xm 映射擴展內存頁。xs 顯示擴展內存的狀態。分隔命令參數所有Debug 命令都接受參數,除了q 命令之外。可以用逗號或空格分隔參數,但是只有在兩個十六進制值之間才需要這些分隔符。因此,以下命令等價:dcs:100 110d cs:100 110d,cs:100,110指定有效地址項Debug 命令中的address 參數指定內存位置。Address 是一個包含字母段記錄的二位名稱或一個四位字段地址加上一個偏移量。可以忽略段寄存器或段地址。a,g,l,t,u 和w
4、 命令的默認段是CS。所有其他命令的默認段是DS。所有數值均為十六進制格式。有效地址如下:CS:010004BA:0100在段名和偏移量之間要有冒號。指定有效范圍項Debug 命令中的range 參數指定了內存的范圍。可以為range 選擇兩種格式:起始地址和結束地址,或者起始地址和長度范圍(由l 表示。例如,下面的兩個語法都可以指定從CS:100 開始的16 字節范圍:cs:100 10fcs:100 l 10+Debug 子命令選擇Debug 命令以獲得詳細信息。Debug:A(匯編Debug:C(比較Debug(轉儲Debug:E(鍵入Debug:F(填充Debug:G(轉向Debug:
5、H(十六進制Debug:I(輸入Debug:L(加載Debug:M(移動Debug:N(名稱Debug:O(輸出Debug:P(執行Debug:Q(退出Debug:r(寄存器Debug:s(搜索Debug:T(跟蹤Debug:U(反匯編Debug:W(寫入Debug:XA(分配擴展內存Debug:XD(取消分配擴展內存Debug:XM(映射擴展內存頁Debug:XS(顯示擴展內存狀態*Debug子命令* Debug:A(匯編直接將8086/8087/8088 記憶碼合并到內存。該命令從匯編語言語句創建可執行的機器碼。所有數值都是十六進制格式,必須按一到四個字符輸入這些數值。在引用的操作代碼(操
6、作碼前指定前綴記憶碼。a address參數address指定鍵入匯編語言指令的位置。對address 使用十六進制值,并鍵入不以“h”字符結尾的每個值。如果不指定地址,a 將在它上次停止處開始匯編。有關將數據輸入到指定字節中的信息,請單擊“相關主題”列表中的Debug E(鍵入。有關反匯編字節的信息,請單擊“相關主題”列表中的Debug U(反匯編。范例a 命令支持所有形式的間接注冊命令,如下例所示:add bx,34bp+2.si-1op bp+diush si 還支持所有操作碼同義詞,如下例所示:loopz 100loope 100ja 200jnbe 200對于8087 操作碼,必須指
7、定wait 或fwait 前綴,如下例所示:fwait fadd st,st(3 ; this line assemblesan fwait prefix說明使用記憶碼段的替代記憶碼為cs:、ds:、es: 和ss:。遠程返回的記憶碼是retf。字符串處理的記憶碼必須明確聲明字符串大小。例如,使用movsw 可以移動16 位的字串,使用mov*(文字因故被系統屏蔽*(文字因故被系統屏蔽可以移動8 位字節串。匯編跳轉和調用匯編程序根據字節替換自動將短、近和遠的跳轉及調用匯編到目標地址。通過使用near 或far 前綴可以替代這樣的跳轉或調用,如下例所示:-a0100:05000100:0500
8、jmp 502 ; a 2-byte short jump0100:0502 jmp near 505 ; a 3-byte near jump0100:0505 jmp far 50a ; a 5-byte far jump可以將near 前綴縮寫為ne。區分字和字節內存位置當某個操作數可以引用某個字內存位置或者字節內存位置時,必須用前綴word ptr 或者前綴byte ptr 指定數據類型。可接受的縮寫分別是wo 和by。以下范例顯示兩種格式:dec wo sieg byte ptr 128指定操作數Debug 使用包括在中括號( 的操作數引用內存地址的習慣用法。這是因為另一方面Debu
9、g 不能區分立即操作數和內存地址的操作數。以下范例顯示兩種格式:mov ax,21 ; load AX with 21hmov ax,21 ; load AX with thecontents ofmemory 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:&q
10、uot;dw 1000,2000,3000,"BACH"+Debug:C(比較比較內存的兩個部分。c range address參數range指定要比較的內存第一個區域的起始和結束地址,或起始地址和長度。有關有效的range 值的信息,請單擊“相關主題”列表中的“Debug 說明”。指定要比較的第二個內存區域的起始地址。有關有效address 值的信息,請單擊“相關主題”列表中的“Debug 說明”。+范例以下命令具有相同效果:c100,10f 300c100l10 300每個命令都對100h 到10Fh 的內存數據塊與300h 到30Fh 的內存數據塊進行比較。Debug
11、 響應前面的命令并顯示如下信息(假定DS = 197F:197F:0100 4D E4 197F:0300197F:0101 67 99 197F:0301197F:0102 A3 27 197F:0302197F:0103 35 F3 197F:0303197F:0104 97 BD 197F:0304197F:0105 04 35 197F:0305197F:0107 76 71 197F:0307197F:0108 E6 11 197F:0308197F:0109 19 2C 197F:0309197F:010A 80 0A 197F:030A197F:010B 36 7F 197F:0
12、30B197F:010C BE 22 197F:030C197F:010D 83 93 197F:030D197F:010E 49 77 197F:030E197F:010F 4F 8A 197F:030F注意列表中缺少地址197F:0106 和197F:0306。這表明那些地址中的值是相同的。+說明如果range 和address 內存區域相同,Debug 將不顯示任何內容而直接返回到Debug 提示符。如果有差異,Debug 將按如下格式顯示:address1 byte1 byte2 addess2Debug(轉儲顯示一定范圍內存地址的內容。d range參數range指定要顯示其內容的內
13、存區域的起始和結束地址,或起始地址和長度。有關有效的range 值的信息,請單擊“相關主題”列表中的“Debug 說明”。如果不指定range,Debug 程序將從以前d 命令中所指定的地址范圍的末尾開始顯示128 個字節的內容。有關顯示寄存器內容的信息,請單擊“相關主題”列表中的Debug R(寄存器。+范例假定鍵入以下命令:dcs:100 10fDebug 按以下格式顯示范圍中的內容:04BA:0100 54 4F 4D 00 53 41 57 59-45 52 00 00 00 00 00 00 TOM.SAWYER.如果在沒有參數的情況下鍵入 d 命令,Debug 按以前范例中所描述的
14、內容來編排顯示格式。顯示的每行以比前一行的地址大16 個字節(如果是顯示40 列的屏幕,則為8 個字節的地址開頭。對于后面鍵入的每個不帶參數的d 命令,Debug 將緊接在最后顯示的命令后立即顯示字節內容。如果鍵入以下命令,Debug 將從CS:100 開始顯示20h 個字節的內容:dcs:100 l 20如果鍵入以下命令,Debug 將顯示范圍從CS 段的100h 到115h 中所有字節的內容:dcs:100 115+說明當使用d 命令時,Debug 以兩個部分顯示內存內容:十六進制部分(每個字節的值都用十六進制格式表示和ASCII 碼部分(每個字節的值都用ASCII 碼字符表示。每個非打印
15、字符在顯示的ASCII 部分由句號(. 表示。每個顯示行顯示16 字節的內容,第8 字節和第9 字節之間有一個連字符。每個顯示行從16 字節的邊界上開始。+Debug:E(鍵入將數據輸入到內存中指定的地址。可以按十六進制或ASCII 格式鍵入數據。以前存儲在指定位置的任何數據全部丟失。e address參數address指定輸入數據的第一個內存位置。list指定要輸入到內存的連續字節中的數據。有關集成記憶碼的信息,請單擊“相關主題”列表中的Debug A(匯編。有關顯示內存部分內容的信息,請單擊“相關主題”列表中的Debug D (轉儲。+范例假定鍵入以下命令:ecs:100Debug 按下面
16、的格式顯示第一個字節的內容: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
17、(值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 個字節。+說明使用address 參數如果在沒有指定可選的list 參數的值情況下指定address 的值,Debug 將顯示地址和內容,在下一行重復地址,并等待您的輸入。此
18、時,您可以執行下列操作之一:·替換字節值。為此,請在當前值后鍵入新值。如果您鍵入的值不是有效的十六進制值,或該值包含兩個以上的數字,則Debug 不會回顯無效或額外的字符。·進入下一個字節。為此,請按SPACEBAR(空格鍵。要更改該字節中的值,請在當前值后鍵入新值。如果按SPACEBAR(空格鍵時,移動超過了8 位界限,Debug 程序將顯示新的一行并在行首顯示新地址。·返回到前一個字節。為此,請按HYPHEN 鍵(-。可以反復按HYPHEN 鍵(- 向后移動超過多個字節。在按HYPHEN 時,Debug 開始新行并顯示當前地址和字節值。·停止執行e
19、命令。為此,請按ENTER 鍵。在任何字節位置都可以按ENTER。使用list 參數如果指定list 參數的值,隨后的e 命令將使用列表中的值替換現有的字節值。如果發生錯誤,將不更改任何字節值。List 值可以是十六進制字節或字符串。使用空格、逗號或制表符來分隔值。必須將字符串包括在單或雙引號中。+Debug:F(填充使用指定的值填充指定內存區域中的地址。可以指定十六進制或ASCII 格式表示的數據。任何以前存儲在指定位置的數據將會丟失。f range list參數range指定要填充內存區域的起始和結束地址,或起始地址和長度。關于有效的range 值的信息,請單擊“相關主題”列表中的“Deb
20、ug 說明”。list指定要輸入的數據。List 可以由十六進制數或引號包括起來的字符串組成。+范例假定鍵入以下命令:f04ba:100l100 42 45 52 54 41作為響應,Debug 使用指定的值填充從04BA:100 到04BA:1FF 的內存位置。Debug 重復這五個值直到100h 個字節全部填滿為止。+說明使用range 參數如果range 包含的字節數比list 中的數值大,Debug 將在list 中反復指派值,直到range 中的所有字節全部填充。如果在range 中的任何內存損壞或不存在,Debug 將顯示錯誤消息并停止f 命令。使用list 參數如果list 包含
21、的數值多于range 中的字節數,Debug 將忽略list 中額外的值。+Debug:G(轉向運行當前在內存中的程序。g =address breakpoints參數=address指定當前在內存中要開始執行的程序地址。如果不指定address,Windows 2000 將從CS:IP 寄存器中的當前地址開始執行程序。reakpoints指定可以設置為g 命令的部分的1 到10 個臨時斷點。有關執行循環、重復的字符串指令、軟件中斷或子程序的信息,請單擊“相關主題”列表中的Debug P(執行。有關執行指令的信息,請單擊“相關主題”列表中的Debug T(跟蹤。范例假定鍵入以下命令:gcs:7
22、550Windows 2000 運行當前內存中的程序,直到執行到CS 段中的斷點地址7550 為止。Debug 將顯示寄存器的內容和標志的狀態并結束g 命令。以下命令設置兩個斷點:gcs:7550, cs:8000如果在Debug 遇到斷點之后再次鍵入g 命令,將從在斷點之后的指令開始執行,而不是在通常的開始地址執行。+說明使用address 參數必須在address 參數之前使用等號(= 以區分開始地址(address 和斷點地址(breakpoints。指定斷點程序在它遇到的第一個斷點處停止,而不論您在breakpoint 列表的什么位置鍵入斷點。Debug 在每個斷點處用中斷代碼代替原始
23、指令。當程序到達斷點時,Debug 將所有斷點地址恢復到它們的最初指令并顯示所有寄存器的內容、所有標記的狀態以及最后執行指令的解碼形式。Debug 顯示的信息與使用Debug r(寄存器命令并指定斷點時所顯示的信息相同。如果不在斷點處停止程序,Debug 程序將不使用原始指令替換中斷代碼。設置斷點的限制可以只在包含8086 操作代碼(操作碼的第一個字節的地址上設置斷點。如果設置了10 個以上的斷點,Debug 將顯示以下信息:error對用戶堆棧指針的要求用戶堆棧指針必須有效且必須有6 個字節可用于g 命令。該命令使用iret 指令跳轉到正在被測試的程序。Debug 設置用戶堆棧指針并將用戶標
24、志、代碼段寄存器和指令指針壓入用戶堆棧。(如果用戶堆棧無效或太小,操作系統可能會失敗。Debug 在指定的斷點處設置中斷代碼(0CCh。重新啟動程序不要在Windows 2000 顯示以下消息后嘗試重新啟動程序;Program terminated normally要正確地運行程序,必須通過使用Debug n(名稱和l(加載命令重新加載該程序。+Debug:H(十六進制對指定的兩個參數執行十六進制運算。h value1 value2參數value1代表從0 到FFFFh 范圍內的任何十六進制數字。value2代表從0 到FFFFh 范圍內第二個十六進制數字。+范例假定鍵入以下命令:h19f 1
25、0aDebug 執行運算并顯示以下結果。02A9 0095+說明Debug 首先將指定的兩個參數相加,然后從第一個參數中減去第二個參數。這些計算的結果顯示在一行中:先計算和,然后計算差。+Debug:I(輸入從指定的端口讀取并顯示一個字節值。i port參數ort按地址指定輸入端口。地址可以是16 位的值。有關將字節值發送到輸出端口的信息,請單擊“相關主題”列表中的Debug O(輸出。+范例假定鍵入以下命令:i2f8同時假定端口的字節值是42h。Debug 讀取該字節,并將其值顯示如下:42+Debug:L(加載將某個文件或特定磁盤扇區的內容加載到內存。要從磁盤文件加載BX:CX 寄存器中指
26、定的字節數內容,請使用以下語法:l address要略過Windows 2000 文件系統并直接加載特定的扇區,請使用以下語法:l address drive start number參數address指定要在其中加載文件或扇區內容的內存位置。如果不指定address,Debug 將使用CS 寄存器中的當前地址。drive指定包含讀取指定扇區的磁盤的驅動器。該值是數值型:0 = A, 1 = B, 2 = C 等。tart指定要加載其內容的第一個扇區的十六進制數。umber指定要加載其內容的連續扇區的十六進制數。只有要加載特定扇區的內容而不是加載debug 命令行或最近的Debug n(名稱命
27、令中指定的文件時,才能使用drive、start 和number 參數。有關指定用于l 命令的文件的信息,請單擊“相關主題”列表中的Debug n(名稱。有關寫入調試到磁盤的文件的信息,請單擊“相關主題”列表中的Debug w(寫入。+范例假定啟動Debug 并鍵入以下命令:現在可以鍵入l 命令以加載F。Debug 將加載文件并顯示Debug 提示符。假定需要從驅動器 C 將起始邏輯扇區為15 (0Fh 的109 (6Dh 個扇區的內容加載到起始地址為04BA:0100 的內存中。為此,請鍵入以下命令:l04ba:100 2 0f 6d注意使用不帶參數的l 命令當使用不帶參數的l 命令時,在d
28、ebug 命令行上指定的文件將加載到內存中,從地址CS:100 開始。Debug 同時將BX 和CX 寄存器設置為加載的字節數。如果不在debug 命令行指定文件,所裝入的文件將是最近使用n 命令經常指定的文件。使用具有address 參數的1 命令如果使用帶address 參數的l 命令,Debug 將從內存位置address 開始加載文件或指定扇區的內容。使用帶全部參數的l 命令如果使用帶所有參數的l 命令,Debug 將加載指定磁盤扇區的內容而不是加載文件。加載特定扇區的內容指定范圍內的每個扇區均從drive 讀取。Debug 從start 開始加載,直到在number 中指定的扇區數中
29、的內容全部被加載。加載 .exe 文件Debug 忽略 .exe 文件的地址address 參數。如果指定 .exe 文件,Debug 將文件重新定位到.exe 文件的標題中指定的加載地址。在.exe 文件被加載到內存前,標題自身從 .exe 文件脫離,因此磁盤上的 .exe 文件大小與內存中的不同。如果要檢查整個 .exe 文件,請使用不同的擴展名重命名文件。打開十六進制文件Debug 將具有 .hex 擴展名的文件認為十六進制格式文件。鍵入不帶參數的l 命令,可以加載從十六進制文件中指定的地址處開始的十六進制文件。如果鍵入的l 命令包含address 參數,Debug 將把指定的地址加到在
30、十六進制文件中找到的地址上,以確定起始地址。+Debug:M(移動將一個內存塊中的內容復制到另一個內存塊中。m range address參數range指定要復制內容的內存區域的起始和結束地址,或起始地址和長度。address指定要將range 內容復制到該位置的起始地址。范例假定鍵入以下命令:mcs:100 110 cs:500Debug 首先將CS:110 地址中的內容復制到地址CS:510 中,然后將CS:10F 地址中的內容復制到CS:50F 中,如此操作直至將CS:100 地址中的內容復制到地址CS:500 中。要查看結果,請使用Debug d(轉儲命令,并使用m 命令指定目標地址。
31、+說明復制操作對現有數據的影響如果新數據沒有寫入正在被復制的數據塊中的地址,則源數據將保持不變。但是,如果目標塊已經包含數據(就象它在覆蓋副本操作中一樣,則將改寫該數據。(覆蓋復制操作是指那些目標數據塊部分內容覆蓋原數據塊部分內容的操作。執行覆蓋復制操作m 命令執行目標地址的覆蓋復制操作,而不丟失數據。將改寫的地址內容首先復制。因此,如果將較高位地址的數據復制到較低位地址,則復制操作從原塊的最低位地址開始并向最高位地址進行。反之,如果要將數據從低地址復制到高地址,復制操作從原塊的最高地址開始,向最低地址進行。+Debug:N(名稱指定Debug l(加載或w(寫入命令的可執行文件的名稱,或者指
32、定正在調試的可執行文件的參數。n drive:path filename要指定測試的可執行文件的參數,請使用以下語法:file-parameters參數如果在沒有參數的情況下使用,則n 命令清除當前規范。drive:path filename指定要測試的可執行文件的位置和名稱。file-parameters為正在測試的可執行文件指定參數和開關。有關將文件或指定磁盤扇區的內容加載到內存中的信息,請單擊“相關主題”列表中的Debug L(加載。有關寫入調試到磁盤的文件的信息,請單擊“相關主題”列表中的Debug W(寫入。+范例假定已經啟動Debug,并加載了正在調試的程序P。接著您決定為P 指定
33、兩個參數并運行此程序。以下是此范例的命令序列:debug aram1 param2g在這種情況下,Debug g(轉向命令會運行該程序,就好像您已在Windows 2000 命令提示符后鍵入了如下命令:rog param1 param2所以,測試和調試反映P 通常的運行時間環境。在下面的命令序列中,第一個n 命令將File1.exe 指定為后接的l(加載命令的文件,該命令將File1.exe 加載到內存。第二個n 命令指定File1.exe 將使用的參數。最后,g 命令將運行File1.exe 文件,就好像您在Windows 2000 命令行中鍵入了File1 File2.dat File2.
34、dat 一樣。file1.exelfile2.dat file3.datg注意·不要在n 命令的第二種形式后使用l 命令。還要注意,如果現在使用w(寫入命令, Windows 2000 將使用名稱File2.dat 保存正在調試的文件File1.exe。為避免出現此結果,應該總是在l 或w 命令之前立即使用n 命令的第一種形式。+說明命令的兩個用途可以按兩種方式使用n 命令。首先,您可以使用它以指定后面的l(加載或w(寫入命令所使用的文件。如果在沒有命名所調試文件的情況下啟動Debug,必須在使用l 命令加載文件之前使用命令nfilename。在CS:5C 為文件控制塊(FCB 正確
35、編排文件名的格式。其次,可以使用n 命令指定被調試文件的命令行參數和開關。內存區域以下四個內存區域都會受到n 命令的影響:內存位置內容CS:5C 文件1 的文件控制數據塊(FCBCS:6C 文件2 的文件控制數據塊(FCBCS:80 n 命令行的長度(以字符表示CS:81 n 命令行字符的開頭為n 命令指定的第一個文件名被放在CS:5C 的FCB 中。如果指定第二個文件名,此名稱將放置到CS:6C 的FCB 中。n 命令行上鍵入的字符數(除第一個字符之外,n存儲在位置CS:80。n 命令行上的實際字符(再次,除了字母n 之外存儲在以CS:81 開頭的位置。注意這些字符可以是在Windows 2
36、000 命令提示符下鍵入的命令中有效的任何開關和分隔符。+Debug:O(輸出將字節值發送到輸出端口。o port byte-value參數ort通過地址指定輸出端口。端口地址可以是16 位值。yte-value指定要指向port 的字節值。有關從輸入端口讀取字節值的信息,請單擊“相關主題”列表中的Debug I(輸入。+范例要將字節值4Fh 發送到地址為2F8h 的輸出端口,請鍵入以下命令:o2f8 4f+Debug:P(執行執行循環、重復的字符串指令、軟件中斷或子例程;或通過任何其他指令跟蹤。= address number參數=address指定第一個要執行指令的位置。如果不指定地址,則
37、默認地址是在CS:IP 寄存器中指定的當前地址。umber指定在將控制返回給Debug 之前要執行的指令數。默認值為1。有關運行當前在內存中程序的信息,請單擊“相關主題”列表中的Debug G(轉向。有關執行指令的信息,請單擊“相關主題”列表中的Debug T(跟蹤。+范例假定正在測試的程序在地址CS:143F 處包含一個call 指令。要運行call 目標位置的子程序然后將控制返回到Debug,請鍵入以下命令:=143fDebug 按以下格式顯示結果:AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=2246
38、ES=2246 SS=2246 CS=2246 IP=1443 NV UP EI PL NZ AC PO NC2246:1442 7505 JNZ 144A+說明將控制傳送到要測試的程序當p 命令將控制從Debug 傳送到要測試的程序時,該程序不間斷運行,直到循環、重復字符串指令、軟件中斷或者完成了指定地址的子例程為止,或者直到執行了指定數量的機器指令為止。控制返回到Debug。地址參數的限制如果address 參數沒有指定段,Debug 將使用被測試程序的CS 寄存器。如果省略address,程序將從CS:IP 寄存器所指定的地址開始執行。必須在address 參數之前使用等號(= 以便將它
39、與number 參數區分。如果在指定地址處的指令不是循環、重復的字符串指令、軟件中斷或子例程,則p 命令與Debug t(跟蹤命令的作用相同。使用p 命令顯示的郵件當p 執行完一段說明后,Debug 顯示出程序的寄存器內容、標志的狀態以及下一段將要被執行的指令的解碼形式。警告·不能使用p 命令跟蹤只讀內存(ROM。+Debug:Q(退出停止Debug 會話,不保存當前測試的文件。當您鍵入q 以后,控制返回到Windows 2000 的命令提示符。q參數該命令不帶參數。有關保存文件的信息,請單擊“相關主題”列表中的Debug W(寫入。+Debug:R(寄存器顯示或改變一個或多個CPU
40、 寄存器的內容。r register-name參數無如果在沒有參數的情況下使用,則r 命令顯示所有寄存器的內容以及寄存器存儲區域中的標志。register-name指定要顯示其內容的寄存器名。有關顯示內存部分內容的信息,請單擊“相關主題”列表中的Debug D(轉儲。有關反匯編字節的信息,請單擊“相關主題”列表中的Debug U(反匯編。+范例要查看所有寄存器的內容、所有標記的狀態和當前位置的指令解碼表,請鍵入以下命令:r如果當前位置是CS:11A,顯示外觀將類似于以下內容:AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0
41、000DS=04BA ES=04BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC04BA:011A CD21 INT 21要只查看標志的狀態,請鍵入以下命令:rfDebug 按以下格式顯示信息:NV UP DI NG NZ AC PE NC - _現在,您可以按任意順序鍵入一個或多個有效的標志值,其中可以有或沒有空格,如下所示:v up di ng nz ac pe nc - pleicyDebug 結束r 命令并顯示Debug 提示符。要查看更改,請鍵入r 或rf 命令。Debug 將顯示以下內容:NV UP EI PL NZ AC PE
42、CY - _按ENTER 返回到Debug 提示符。+說明使用r 命令如果指定了寄存器名稱,Windows 2000 將顯示以十六進制標記表示的寄存器的16 位值,并將冒號顯示為提示符。如果要更改包含在寄存器中的值,除非鍵入新值并按ENTER 鍵;否則,請按ENTER 鍵返回Debug 提示符。有效寄存器名以下是register-name 的有效值:ax、bx、cx、dx、sp、bp、si、di、ds、es、ss、cs、ip、pc 及f。ip 和pc 都引用指令指針。如果指定寄存器名稱,而不是從前面的列表中指定,Windows 2000 將顯示以下消息:r error使用f 字符而不是寄存器名
43、如果鍵入f 字符代替寄存器名,Debug 將每個標記的當前設置顯示為兩字母代碼,然后顯示Debug 提示符。要更改標志的設置,請從下表中鍵入適當的兩字母代碼:標志名設置清除溢出ov nv方向dn(減up(增中斷ei(啟用di(禁用正負ng(負pl(正零zr nz輔助進位ac na奇偶校驗pe(偶校驗po(奇校驗進位cy nc可以按任何順序鍵入新的標志值。不需要在這些值之間留出空格。要停止r 命令,請按ENTER 鍵。任何沒有指定新值的標志保持不變。用r 命令顯示的郵件如果為標記指定了多個值,Debug 將顯示以下消息:df error如果指定沒有在前面的表中列出的標志代碼,Debug 將顯示以
44、下消息:f error在這兩種情況下,Debug 將忽略所有在無效項目之后指定的設置。Debug 的默認設置在啟動Debug 時,會將段寄存器設置到空閑內存的低端,指令指針設置為0100h,清除所有標志,并且將其余寄存器設置為零,除了被設置為FFEEh 的sp 之外。+Debug:S(搜索在某個地址范圍搜索一個或多個字節值的模式。range list參數range指定要搜索范圍的開始和結束地址。有關range 參數有效值的信息,請單擊“相關主題”列表中的Debug。list指定一個或多個字節值的模式,或要搜索的字符串。用空格或逗號分隔每個字節值和下一個字節值。將字符串值包括在引號中。+范例假定
45、需要查找包含值41 并且范圍從CS:100 到CS:110 的所有地址。為此,請鍵入以下命令:cs:100 110 41Debug 按以下格式顯示結果:04BA:010404BA:010D-以下命令在CS:100 到CS:1A0 的范圍內搜索字符串“Ph”。cs:100 1a0 "Ph"+說明如果list 參數包含多個字節值,Debug 將只顯示出現字節值的第一個地址。如果list 只包含一個字節值,Debug 將顯示指定范圍內出現該值的所有地址。+Debug:T(跟蹤執行一條指令,并顯示所有注冊的內容、所有標志的狀態和所執行指令的解碼形式。t =address numbe
46、r參數=address指定Debug 啟動跟蹤指令的地址。如果省略address 參數,跟蹤將從程序的CS:IP 寄存器所指定的地址開始。有關address 參數有效值的信息,請單擊“相關主題”列表中的Debug。umber指定要跟蹤的指令數。該值必須是十六進制數。默認值為1。有關執行循環、重復的字符串指令、軟件中斷或子例程的信息,請單擊“相關主題”列表中的Debug P(執行。有關執行當前內存中程序的信息,請單擊“相關主題”列表中的Debug G(轉向。+范例要執行一個指令(CS:IP 指向的指令,然后顯示寄存器的內容、標志的狀態以及指令的解碼形式,請鍵入以下命令:t如果程序中的指令位于04
47、BA:011A,Debug 可能顯示下列信息:AX=0E00 BX=00FF CX=0007 DX=01FF SP=039D BP=0000 SI=005C DI=0000DS=04BA ES=04BA SS=04BA CS=O4BA IP=011A NV UP DI NG NZ AC PE NC04BA:011A CD21 INT 21+說明跟蹤只讀內存中的指令t 命令使用8086 或8088 微處理器的硬件跟蹤模式。因此,也可以跟蹤存儲在只讀內存(ROM 中的指令。使用地址參數必須在address 參數之前使用等號(= 以便將它與number 參數區分。+Debug:U(反匯編反匯編字節并
48、顯示相應的原語句,其中包括地址和字節值。反匯編代碼看起來象已匯編文件的列表。u range參數無如果在沒有參數的情況下使用,則u 命令分解20h 字節(默認值,從前面u 命令所顯示地址后的第一個地址開始。range指定要反匯編代碼的起始地址和結束地址,或起始地址和長度。有關range 參數有效值的信息,請單擊“相關主題”列表中的Debug。有關集成記憶碼的信息,請單擊“相關主題”列表中的Debug A(匯編。有關顯示內存部分內容的信息,請單擊“相關主題”列表中的Debug D(轉儲。+范例要反匯編16 (10h 字節,從地址04BA:0100 開始,請鍵入以下命令:u04ba:100l10De
49、bug 按以下格式顯示結果:04BA:0100 206472 AND SI+72,AH04BA:0103 69 DB 6904BA:0104 7665 JBE 016B04BA:0106 207370 AND BP+DI+70,DH04BA:0109 65 DB 6504BA:010A 63 DB 6304BA:010B 69 DB 6904BA:010C 66 DB 6604BA:010D 69 DB 6904BA:010E 63 DB 6304BA:010F 61 DB 61如果只顯示從04BA:0100 到04BA:0108 特定地址的信息,請鍵入以下命令:u04ba:0100 0108
50、Debug 顯示以下內容:04BA:0100 206472 AND SI+72,AH04BA:0103 69 DB 6904BA:0104 7665 JBE 016B04BA:0106 207370 AND BP+DI+70,DH+Debug:W(寫入將文件或特定分區寫入磁盤。要將在BX:CX 寄存器中指定字節數的內容寫入磁盤文件,請使用以下語法:w address要略過Windows 2000 文件系統并直接寫入特定的扇區,請使用以下語法:w address drive start number參數address指定要寫到磁盤文件的文件或部分文件的起始內存地址。如果不指定address,De
51、bug 程序將從CS:100 開始。關于address 參數有效值的信息,請在“相關主題”列表中單擊Debug。drive指定包含目標盤的驅動器。該值是數值型:0 = A, 1 = B, 2 = C,等等。tart指定要寫入第一個扇區的十六進制數。umber指定要寫入的扇區數。有關指定用于w 命令的文件的信息,請單擊“相關主題”列表中的Debug N(名稱。有關將文件或文件扇區內容加載到內存中的信息,請單擊“相關主題”列表中的Debug L(加載。范例假定要將起始地址為CS:100 的內存內容寫入到驅動器B 的磁盤中。需要將數據從磁盤的邏輯扇區號37h 開始并持續2Bh 個扇區。為此,鍵入以下
52、命令:wcs:100 1 37 2b當寫操作完成時,Debug 再次顯示Debug 提示符。+說明必須在啟動Debug 時或者在最近的Debug n(名稱命令中指定磁盤文件的名字。這兩種方法都可以將地址CS:5C 處文件控制塊的文件名正確地編排格式。在使用不帶參數的w 命令之前重新設置BX:CX如果使用了Debug g(轉向、t(跟蹤、p(執行或r(寄存器命令,必須在使用無參數的w 命令之前,將BX:CX 寄存器復位。將修改后的文件寫入磁盤如果修改文件但不更改文件名、長度或起始地址,Debug 仍然可以正確地將文件寫入源磁盤位置。w 命令的限制不能用該命令寫入 .exe 或 .hex 文件。警告·因為略過Windows 2000 文件句柄,所以寫入特定的分區非常危險。如果鍵入錯誤的值,則磁盤文件結構很容易被損壞。+Debug:XA(分配擴展內存分配擴展內存的指定頁面數。要使用擴展內存,必須安裝符合4.0 版的Lotu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中央司法警官學院《勞動教育1》2023-2024學年第二學期期末試卷
- 佳木斯職業學院《藏族文學史》2023-2024學年第二學期期末試卷
- 浙江理工大學科技與藝術學院《歐洲音樂史》2023-2024學年第二學期期末試卷
- 萊蕪職業技術學院《企業資源計劃(ERP)》2023-2024學年第二學期期末試卷
- 新鄉職業技術學院《論文與寫作》2023-2024學年第二學期期末試卷
- 江蘇城市職業學院《商業插畫》2023-2024學年第二學期期末試卷
- 東北電力大學《管理科學與工程類》2023-2024學年第二學期期末試卷
- 齊魯理工學院《課程與教育學論》2023-2024學年第二學期期末試卷
- 事業招聘筆試題目及答案
- 遼寧石油化工大學《班主任管理藝術》2023-2024學年第二學期期末試卷
- NB-T32036-2017光伏發電工程達標投產驗收規程
- 2024年吉林省中考歷史試卷真題(含答案)
- 人教部編版三年級下冊語文【選擇題】專項復習訓練真題100題(附答案解析)
- 國際標準舞智慧樹知到期末考試答案章節答案2024年成都體育學院
- 互聯網與營銷創新智慧樹知到期末考試答案章節答案2024年華東師范大學
- 四川省成都市溫江縣2023-2024學年八下物理期末監測試題及答案解析
- 內科學(腎臟-內分泌-血液)智慧樹知到期末考試答案章節答案2024年溫州醫科大學
- 食品安全與日常飲食智慧樹知到期末考試答案章節答案2024年中國農業大學
- 100以內進退位加減法口算題每天60道
- MOOC 嵌入式軟件設計-大連理工大學 中國大學慕課答案
- 永久基本農田儲備區劃定技術方案
評論
0/150
提交評論