❶ debug命令有什麼作用如何使用
DEBUG是為匯編語言設計的一種高度工具,它通過單步、設置斷點等方式為匯編語言程序員提供了非常有效的調試手段。x0dx0a一、DEBUG程序的調用x0dx0a 在DOS的提示符下,可鍵入命令:x0dx0a C:\DEBUG [D:][PATH][FILENAME[.EXT]][PARM1][PARM2]x0dx0a 其中,文件名是被調試文件的名字。如用戶鍵入文件,則DEBUG將指定的文件裝入存儲器中,用戶可對其進行調試。如果未鍵入文件名,則用戶可以用當前存儲器的內容工作,或者用DEBUG命令N和L把需要的文件裝入存儲器後再進行調試。命令中的D指定驅動器PATH為路徑,PARM1和PARM2則為運行被調試文件時所需要的命令參數。x0dx0a 在DEBUG程序調入後,將出現提示符,此時就可用DEBUG命令來調試程序。x0dx0a二、DEBUG的主要命令x0dx0a 1、顯示存儲單元的命令D(DUMP),格式為:x0dx0a _D[address]或_D[range]x0dx0a 例如,按指定范圍顯示存儲單元內容的方法為:x0dx0a -d100 120x0dx0a18E4:0100 c7 06 04 02 38 01 c7 06-06 02 00 02 c7 06 08 02 G...8.G.....G...x0dx0a18E$:0110 02 02 bb 04 02 e8 02 00-CD 20 50 51 56 57 8B 37 ..;..h..M PQVW.x0dx0a 7x0dx0a18E4:0120 8Bx0dx0a 其中0100至0120是DEBUG顯示的單元內容,左邊用十六進製表示每個位元組,右邊用ASCII字元表示每個位元組,·表示不可顯示的字元。這里沒有指定段地址,D命令自動顯示DS段的內容。如果只指定首地址,則顯示從首地址開始的80個位元組的內容。如果完全沒有指定地址,則顯示上一個D命令顯示的最後一個單元後的內容。x0dx0a2、修改存儲單元內容的命令有兩種。x0dx0a ·輸入命令E(ENTER),有兩種格式如下:第一種格式可以用給定的內容表來替代指定范圍的存儲單元內容。命令格式為:x0dx0a -E address[list]x0dx0a例如,-E DS:100 F3'XYZƎDx0dx0a 其中F3,'X','Y','Z'和各佔一個位元組,該命令可以用這五個位元組來替代存儲單元DS:0100到0104的原先的內容。x0dx0a 第二種格式則是採用逐個單元相繼修改的方法。命令格式為:x0dx0a -E addressx0dx0a例如,-E DS:100x0dx0a 則可能顯示為:x0dx0a 18E4:0100 89.-x0dx0a 如果需要把該單元的內容修改為78,則用戶可以直接鍵入78,再按「空格」鍵可接著顯示下一個單元的內容,如下:x0dx0a 18E4:0100 89.78 1B.-x0dx0a 這樣,用戶可以不斷修改相繼單元的內容,直到用ENTER鍵結束該命令為止。x0dx0a ·填寫命令F(FILL),其格式為:x0dx0a -F range listx0dx0a例如:-F 4BA:0100 5 F3'XYZƎDx0dx0a 使04BA:0100~0104單元包含指定的五個位元組的內容。如果list中的位元組數超過指定的范圍,則忽略超過的項;如果list的位元組數小於指定的范圍,則重復使用list填入,直到填滿指定的所有單元為止。x0dx0a3)檢查和修改寄存器內容的命令R(register),它有三種格式如下:x0dx0a ·顯示CPU內所有寄存器內容和標志位狀態,其格式為:x0dx0a -Rx0dx0a例如,-rx0dx0a AX=0000 BX=0000 CX=010A DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000x0dx0a DS=18E4 ES=18E4 SS=18E4 CS=18E4 IP=0100 NV UP DI PL NZ NA PO NCx0dx0a 18E4:0100 C70604023801 MOV WORD PTR [0204],0138 DS:0204=0000x0dx0a ·顯示和修改某個寄存器內容,其格式為:x0dx0a -R register namex0dx0a例如,鍵入x0dx0a -R AXx0dx0a 系統將響應如下:x0dx0a AX F1F4x0dx0a :x0dx0a即AX寄存器的當前內容為F1F4,如不修改則按ENTER鍵,否則,可鍵入欲修改的內容,如:x0dx0ax0dx0a -R bxx0dx0a BX 0369x0dx0a :059Fx0dx0a則把BX寄存器的內容修改為059F。x0dx0a ·顯示和修改標志位狀態,命令格式為:x0dx0a -RF系統將響應,如:x0dx0a OV DN EI NG ZR AC PE CY-x0dx0a 此時,如不修改其內容可按ENTER鍵,否則,可鍵入欲修改的內容,如:x0dx0a OV DN EI NG ZR AC PE CY-PONZDINVx0dx0a 即可,可見鍵入的順序可以是任意的。x0dx0a4)運行命令G,其格式為:x0dx0a -G[=address1][address2[address3?]]x0dx0a 其中,地址1指定了運行的起始地址,如不指定則從當前的CS:IP開始運行。後面的地址均為斷點地址,當指令執行到斷點時,就停止執行並顯示當前所有寄存器及標志位的內容,和下一條將要執行的指令。x0dx0a5)跟蹤命令T(Trace),有兩種格式:x0dx0a ·逐條指令跟蹤x0dx0a -T [=address]x0dx0a 從指定地址起執行一條指令後停下來,顯示所有寄存器內容及標志位的值。如未指定地址則從當前的CS:IP開始執行。x0dx0a ·多條指令跟蹤x0dx0a -T [=address][value]x0dx0a 從指定地址起執行n條指令後停下來,n由value指定。x0dx0a6)匯編命令A(Assemble),其格式為:x0dx0a -A[address]x0dx0a 該命令允許鍵入匯編語言語句,並能把它們匯編成機器代碼,相繼地存放在從指定地址開始的存儲區中。必須注意:DEBUG把鍵入的數字均看成十六進制數,所以如要鍵入十進制數,則其後應加以說明,如100D。x0dx0a7)反匯編命令U(Unassemble)有兩種格式。x0dx0a ·從指定地址開始,反匯編32個位元組,其格式為:x0dx0a -U[address]x0dx0a例如:x0dx0a -u100x0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0a 18E4:0112 BBO4O2 MOV BX,0204x0dx0a 18E4:0115 E80200 CALL 011Ax0dx0a 18E4:0118 CD20 INT 20x0dx0a 18E4:011A 50 PUSH AXx0dx0a 18E4:011B 51 PUSH CXx0dx0a 18E4:011C 56 PUSH SIx0dx0a 18E4:011D 57 PUSH DIx0dx0a 18E4:011E 8B37 MOV SI,[BX]x0dx0a如果地址被省略,則從上一個U命令的最後一條指令的下一個單元開始顯示32個位元組。x0dx0a ·對指定范圍內的存儲單元進行反匯編,格式為:x0dx0a -U[range]x0dx0a例如:x0dx0a -u100 10cx0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0a或x0dx0a -u100 112 x0dx0a 18E4:0100 C70604023801 MOV WORD PTR[0204],0138x0dx0a 18E4:0106 C70606020002 MOV WORD PTR[0206],0200x0dx0a 18E4:010C C70606020202 MOV WORD PTR[0208],0202x0dx0ax0dx0a 可見這兩種格式是等效的。x0dx0a8)命名命令N(Name),其格式為:x0dx0a -N filespecs [filespecs]x0dx0a命令把兩個文件標識符格式化在CS:5CH和CS:6CH的兩個文件控制塊中,以便在其後用L或W命令把文件裝入存檔。filespecs的格式可以是:x0dx0a[d:][path] filename[.ext]x0dx0a例如,x0dx0a -N myprogx0dx0a -Lx0dx0a -x0dx0a可把文件myprog裝入存儲器。x0dx0a9)裝入命令(Load),有兩種功能。x0dx0a ·把磁碟上指定扇區范圍的內容裝入到存儲器從指定地址開始的區域中。其格式為:x0dx0a -L[address[drive sector sector]x0dx0a ·裝入指定文件,其格式為:x0dx0a -L[address]x0dx0a此命令裝入已在CS:5CH中格式化了文件控制塊所指定的文件。如未指定地址,則裝入CS:0100開始的存儲區中。x0dx0a10)寫命令W(Write),有兩種功能。x0dx0a ·把數據寫入磁碟的指定扇區。其格式為:x0dx0a -W address drive sector sectorx0dx0a ·把數據寫入指定的文件中。其格式為:x0dx0a -W[address]x0dx0a此命令把指定的存儲區中的數據寫入由CS:5CH處的文件控制塊所指定的文件中。如未指定地址則數據從CS:0100開始。要寫入文件的位元組數應先放入BX和CX中。x0dx0a11)退出DEBUG命令Q(Quit),其格式為:x0dx0a -Qx0dx0a它退出DEBUG,返回DOS。本命令並無存檔功能,如需存檔應先使用W命令。
❷ DEBUG命令
在路由器中,DEBUG命令是一種強大的工具,用於獲取交換的報文和幀的詳細信息,用於調試網路問題。它並非常規的網路運行監控手段,而是專為解決特定問題而設計,應在網路負載較低時使用,避免對正常網路運行造成干擾。
使用DEBUG命令時,需謹慎操作,避免使用全局的如"debugging all"這樣的命令,因為這可能會過度監控,影響性能。一旦開始使用,務必在完成調試後立即使用"undo debugging"命令終止調試,以防止不必要的資源消耗。
「Debugger」一詞在技術語境中,雖然字面意思是消除系統中的問題,但實際上,它更多是指幫助我們調試的工具,而非自動解決問題的工具。在調試過程中,我們藉助Debugger監控和控制「Debug對象」的狀態,以發現和解決問題,如查看對象狀態、控制其運行,從而獲取解決問題所需的關鍵信息。
調試工作可能需要軟體和硬體的協同,通過監控「Debug對象」,我們可以了解其動態特徵,進一步理解其內部結構。國內有一本詳盡的著作《軟體調試》可供深入研究。例如,微軟的WinDbg就是一個強大的源碼級調試工具,適用於Kernel和User模式,以及對Dump文件的調試。
DEBUG命令本身包含了一系列詳細的子命令,如匯編、比較內存、顯示內存內容等,每種子命令都有其特定的功能,如查看、輸入、輸出等。在使用時,需正確指定有效地址和范圍,以確保命令的准確執行。
為馬克1號編製程序的是一位女數學家雷斯。霍波,有一天,她在調試程序時出現故障,拆開繼電器後,發現有隻飛蛾被夾扁在觸點中間,從而「卡」住了機器的運行。於是,霍波詼諧的把程序故障統稱為「臭蟲(BUG)」,把排除程序故障叫DEBUG,而這奇怪的「稱呼」,竟成為後來計算機領域的專業行話。如DOS系統中的調試程序,程序名稱就叫DEBUG。DEBUG在windows系統中也是極其重要的編譯操作。