當前位置:成語大全網 - 成語大全 - 調試命令的詳細用法

調試命令的詳細用法

Debug命令DEBUG命令參數詳解DEBUG是壹個DOS實用程序,是程序員的程序調試工具。它可以用來檢查內存中任何地方的字節和修改任何地方的字節。它可以用來逐個執行壹個程序,以驗證程序的正確性。它還可以跟蹤執行過程,比較指令執行前後的值,比較和移動內存中的數據範圍,讀寫文件和磁盤扇區。其功能包括以下幾個方面。1,直接輸入、修改、跟蹤、運行匯編語言源程序;2.觀察操作系統的內容;3.檢查ROMBIOS的內容;4.觀察並改變RAM內的設定值;5.以扇區或文件的形式讀寫軟盤數據。調試將所有數據視為壹個字節序列。所以它可以讀取任何類型的文件。DEBUG可以識別兩種數據:十六進制數據和ASCⅱⅱ代碼字符。它的顯示格式是每個字節的十六進制值和取值在32到126之間的字節對應的ASCⅱII碼字符。調試中有兩種方式輸入數據:提示方式和非提示方式。當使用提示方法時,用戶可以輸入輸入數據的命令,隨後是要輸入數據的地址。然後用戶可以在這個地方看到現有的內容和壹個冒號提示。此時,用戶可以在提示符下輸入新值,或者按enter或CTRL+C返回到短水平(-)提示符。當使用非提示方法時,用戶可以輸入要輸入的數據的存儲地址和要輸入的字節。但是,與使用文字處理器或文本編輯器時不同,使用DEBUG時,用戶不能直接將光標移動到某個入口點來輸入或修改數據,而是壹次輸入壹個或幾個字節。使用DEBUG時,只能涉及內存中的數據,所以壹般會指定要處理的內存地址。地址的輸入格式為:[段地址]:[位移]。如果沒有輸入地址,調試將采用當前內存段,從地址100H的字節開始。第壹個100H字節保留給程序段前綴,這個特殊區域用來建立DOS和程序之間的連接。DEBUG總是使用四個十六進制數字來表示地址。用兩位數表示十六進制數據。至此,大家對DEBUG應該有了初步的了解,但僅僅知道這些是不夠的。接下來我就說說DEBUG的命令格式和命令。進入DEBUG調用調試程序時,會出現壹個簡短的橫線提示,用戶可以在這個簡短的橫線提示後輸入調試程序的命令。壹些調試命令顯示內存地址並生成冒號作為提示。在這些提示之後,用戶可以輸入新值來改變顯示位置的原始值。如果用戶按Enter或CTRL+C而不是輸入新值,原始值不會改變。通常不需要將地址與命令名分開。例如,如果您使用dump命令D查看地址100處的數據,則可以在以下任何情況下輸入此命令:D 100D 100D 100D,100如果輸入命令中有錯誤,DEBUG將在下壹行中標記面對錯誤的位置,例如,-s 100D 12 Error DEBUG ' s註:用於匯編小程序,修改目標程序。所有輸入的數字都是十六進制的,用戶加載到內存中的匯編語句是連續存儲的。如果沒有指定地址,並且之前沒有使用assembly命令,修改後的語句將被匯編到CS:0100區域。例a:> DEBUG-a 0100 08f 1:0100 movah,09 08F1:0102MOVDX,109 08f 1:0105 int 21H;08f 1:0107 int 21H;Debugtan.exe-u:反編譯成匯編語言程序代碼.................................................................................................................................................................Debugtan.exe-g就可以開始運行這個程序了,和DOS下壹模壹樣:*H[數值][數值]十六進制算術運算命令函數:分別顯示兩個十六進制數的和以及第壹個數和第二個數的差。描述:為用戶完成簡單的十六進制數運算。示例:-h45385623 9B5BEF15 *I[端口地址]功能:輸入並顯示(十六進制)指定端口的壹個字節。例如:-i70f 9;顯示端口70內容的F9 I命令可以從80X86 *L的64K個端口取數據[地址][磁盤號:][邏輯扇區號][扇區號]功能:將文件或磁盤的絕對扇區加載到內存中。註意:單個L命令最多可以加載80H個扇區,其中磁盤號為0,1,2,3...分別代表A、B、C、...出現磁盤讀取錯誤並顯示錯誤消息。(1)格式1。l在地址驅動器名的開頭加載扇區/扇區號。這種方法可以將磁盤上指定扇區範圍的內容從指定地址開始加載到內存的區域中,扇區號指的是邏輯/扇區方法。示例:-l10001,將驅動器A的扇區0安裝在CS:100-d 10010f 08f 1:0100 eb3c 903 c 53444 f 53-3663上。MSDOS 6.22.....(2)格式2: L加載地址這種方式可以將指定的文件加載到內存中,加載的文件可以在進入DEBUG時指定,也可以通過n命令建立。格式為-n文件名:例1DEBUGtan.pas -L100例2DEBUG -ntan.pas -L100註意:L命令只能讀取邏輯扇區,不能讀取硬盤分區表A=00,B=01的L命令使用的磁盤代碼。C = 02.....* m[地址範圍][起始地址]數據傳輸命令功能:將地址範圍內的存儲單元內容移動到起始地址的指定地址,表示傳輸過程中源區域和目標區域可以部分重疊;源區域數據在傳輸後保持不變。例如:-e 100414243445-d 1008 f 1:010041424344562626364-6142438。438+000104110-d 110f 1:0100414243450 a 216438。註意:可以同時定義兩個操作文件,並且可以在存儲器CS:5C和CS:6C中設置形成的文件控制塊,用於後續的L和W命令操作。在調試壹個正在運行的程序時,我們在開始調試後,添加該文件的程序名和程序或運行文件的參數,但在調試壹段時,可能會加載其他文件進行測試。這時,我們可以使用n命令來設置它,而不需要退出調試。示例:a: \ > DEBUGtan.exe-NYOUG。PAS當程序調試壹段時間後,如果要將tan.exe加載到tan1.pas中,那麽-ntanl.pas *O[端口地址][數據]輸出命令函數:將字節發送到指定的輸出端口。例:當啟動時要求我們輸入密碼時,我們可以通過以下方式取消-o 7010 _ o 7100 * P[= address][data]進程命令函數:停止壹個子程序調用指令、循環指令、中斷指令或下壹條指令上重復的字符串指令。描述:在執行子程序調用指令、循環指令、中斷指令或重復的字符串指令時,發出P命令執行相關指令,返回下壹條要執行的指令。P命令和T命令壹樣,用來跟蹤程序的運行過程。我們可以在P命令中指定程序的起始地址和指令數。如果沒有指定,由CS: IP指定的程序地址將開始壹次運行壹個命令。P命令和T命令的區別在於,P命令將CALL/INT作為指令執行,這簡化了跟蹤過程。P命令只運行RAM中的命令,而T命令可以運行RAM和ROM中的程序。*Q退出命令。*R[ Register]寄存器命令功能:1。顯示單個寄存器的內容,並提供修改功能。其次,顯示所有寄存器的內容,加上字母標誌位的狀態和下壹條要執行的指令。第三,顯示8個標誌位的狀態,並提供修改功能。如果妳不想改變,就進入。例如:-rbxbx 0050:51-rax = 0000 bx = 0051cx = 0000 sp = FFE ebp = 0000 si = 0000 ds = 0003 es = 0 cd3ss = 0 cd3ip = 065438。38+0000FDBOF如果要更改標誌寄存器並按下帶有-RF的enter鍵,調試將顯示標誌的內容。如果您想更改任何標誌,只需輸入標誌的名稱。未設置標誌名稱設置。未設置標誌名稱設置。溢出(非溢出)NV(非溢出)零ZRNZ(不等於零)方向DN(減少)向上(增加)輔助進位ACNA(不進位)中斷EI(允許)DI(禁止)奇偶標誌PE(偶數)PO(奇數)符號NG(負)PL(正)進位CYNC。LNZNAPONC:-OVDI↓←輸入值*S[地址範圍][字符串]函數:在指定的地址範圍內查找給定的字符串。描述:用於指定查找地址範圍內的字符串,如果找到則顯示其地址,否則直接顯示調試提示。隱式地址是DS段值。這裏的內存可以用(起始地址)(結束地址)或者(起始地址)L(長度)來表示,而字符串和數據線可以混用:比如02.76“BC”。例如:-d 100 of 08f 1:0100 of 2a 41430 b 314296-fff 0 b 98 af 300 b 1...AC,1b-s 100 of " AC " 08f 1:0102←表示找到了,從0102開始,*T[=地址][指令數]跟蹤命令功能:逐個跟蹤程序的執行情況,每壹項。註意:通常跟蹤壹條指令,但用戶也可以設置指令的數量,以便壹次跟蹤多條指令。執行完每條指令後,所有寄存器的內容和標誌狀態都會顯示出來。逐指令跟蹤-T[=起始地址]從指定地址執行完壹條指令後停止,並顯示所有寄存器的內容和標誌位的值。如果使用了指定的地址,將從當前的CS: IP開始執行。答:\ & gt調試-A 08F1:0100MOVDL,03H 08F1:0102MOVAH,02H 08f 1:0104 int 21H 08f 1:0106 int 20h 08f 1:065438-t = 10010;從CS中追蹤10指令:100 *U[起始地址]或[地址範圍]功能:將內存中的內容轉換成匯編語句。註意:反匯編的字節數取決於用戶的系統顯示形式和u命令中使用的選項。(1)從指定地址開始編譯,反匯編32字節-U[ address] ←從CS: 100開始。如果省略該地址,則從U命令的最後壹條指令的下壹個單元開始匯編32個字節。(2)反匯編指定的存儲範圍-u起始地址和結束地址(L長度)例:-u 10010908 f 100 CD 20 int 2008 f 1:0102 ff 9 f 009 a call fa。08f 1:0106 f 0 lock 08 f 1:01 dcallfar[DI]08f 1:0109 f 0 lock描述:如果指定了壹個範圍,則反編譯整個範圍*W[註意:可以從磁盤上指定的內存地址開始寫數據,可以在磁盤上寫調試文件而不用運行W時需要設置文件大小CX或BX寄存器(1)將數據寫入磁盤的指定扇區-W起始地址、驅動器名、起始扇區號(2)將數據寫入指定文件-W起始地址示例A:\ > Debug-a08f 1:0100...編寫程序段08F1: 012A。-RCXCX: 0000: 2A ←寫入的字節數,即程序的結束地址減去開始地址-ntan.com←設置文件名。TAN←可以執行這個程序*"XD "命令:釋放EMS內存示例:-XD 0001 handle 001 deallocate L←釋放了XD釋放後可以重分發的*"XM "命令;將擴展內存上的內存頁區映射到主存區格式:XMRAM長頁號主存頁號句柄示例:-XM320001←將句柄0001的3號邏輯頁區映射到2號真實頁區邏輯頁03 MappedTophysicalPage 02 * "XS "命令:顯示當前EMS的使用情況。格式-XS實用調試命令集合1。非物理零磁道壞軟盤的修復。軟盤表面無明顯劃痕和黴變。壹般情況下,數據可以恢復,或者軟盤可以重復使用。處理方法如下:1。進入調試II。取壹張引導區沒有損壞的好磁盤。插入軟驅-l 10001ⅲ。將損壞的磁盤插入軟驅-W10001-q註意:好磁盤和壞磁盤的容量必須相同。2.讀取物理0磁道壞軟盤中的數據。壹般來說,0磁道損壞的磁盤應該廢棄。當妳嘗試以下方法:軟盤更換:小心翼翼地打開磁盤,將硬盤與金屬芯片分離,然後按照原來的方法粘在壹起,重新格式化。Diskfix:大家肯定用過diskfix比較多,裏面的磁盤修復功能非常好用。可以修復大多數磁盤表面錯誤。