DEBUG調(diào)試命令介紹_第1頁
DEBUG調(diào)試命令介紹_第2頁
DEBUG調(diào)試命令介紹_第3頁
DEBUG調(diào)試命令介紹_第4頁
DEBUG調(diào)試命令介紹_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

DEBUG調(diào)試命令介紹1.主要調(diào)試命令:反匯編命令U:將存儲器中的二進(jìn)制數(shù)據(jù)翻譯成較有意義的助記符形式,以幫助理解,如圖1.5所示。一般常用以下三種格式:a)-U/:從當(dāng)前IP處開始,對連續(xù)約32字節(jié)內(nèi)容反匯編。如對TEST.EXE,剛裝入DEBUG時的IP=OOOO,則在輸入U命令后有如下顯示:-U/13C2:0000B402MOVAH,0213C2:0002B241MOVDL,4113C2:0004CD21INT2113C2:0006B44CMOVAH,4C13C2:0008CD21INT2113C2:000A8B4606MOVAX,[BP+06]13C2:00208B07MOVAX,[BX]阿命令提示符-DEBUGTEST.EXE-u13C213C213C213C213C213C213C213C213C213C213C213C213C213C213C213C200000002000400060008000A000D0Q100011001400160017001A001C0Q1F0020-u13C213C213C213C213C213C213C213C213C213C213C213C213C213C213C213C200000002000400060008000A000D0Q100011001400160017001A001C0Q1F0020B402B241CD21B44CCD218B46068B56082639470A75092639570C7503E909FF268B07UUTUTUU:PZ:PZP:UOONONOOSMNSMNMSOMMIMIMMECJECJJEMAH,02DL,4121AH,4C21AX,[BP+061DX,EBP+081[BX+0AKAK001F[BX+0CKDK001FFF28fiil,[BX]圖1.5反匯編命令的執(zhí)行結(jié)果在上例中,13C2:0000表示CS:IP的內(nèi)容(其中CS的值是動態(tài)值);B402代表該處存放的二進(jìn)制數(shù)據(jù),亦即指令MOVAH,02H的機(jī)器代碼;當(dāng)連續(xù)約32字節(jié)的數(shù)據(jù)反匯編完后,重新回到DEBUG提示符“-”下,如果再鍵入U命令,則將繼續(xù)對后面的內(nèi)存區(qū)反匯編。特別應(yīng)該注意的是,由于反匯編命令針對內(nèi)存區(qū)的二進(jìn)制數(shù)據(jù),而被調(diào)試程序僅占內(nèi)存區(qū)的某一部分,故反匯編出來的內(nèi)容并非全是被調(diào)試程序的代碼,如上例中13C2:000A單元以后的部分,顯然不是TEST.EXE的內(nèi)容。另外還需注意,DEBUG默認(rèn)使用十六進(jìn)制。-U0123/:從指定的IP=0123處開始,對連續(xù)約32字節(jié)內(nèi)容反匯編。-U01230143/:從指定的IP=0123處開始反匯編,直至指定的0143處結(jié)束。顯示寄存器命令R:顯示或修改寄存器的內(nèi)容,如圖1.6所示。一般常用以下形式:a) -R/:顯示所有寄存器當(dāng)前的內(nèi)容及當(dāng)前將執(zhí)行的指令。如對TEST.EXE,在程

序運行之前,鍵入R命令:-R/AX=0000BX=0000CX=000ADX=0000SP=0000BP=0000SI=0000DI=0000DS=13B2ES=13B2SS=13C2CS=13C2IP=0000NVUPEIPLNZNAPONC13C2:0000 B402MOVAH,02圖1.6顯示寄存器命令執(zhí)行結(jié)果在顯示寄存器內(nèi)容時,狀態(tài)標(biāo)志寄存器F表示成各個分離的標(biāo)志位,其意義如下表1.1所示:表1.1標(biāo)志寄存器的標(biāo)志為含義溢出方向中斷符號零輔助進(jìn)位奇偶進(jìn)位0NVUPDIPLNZNAPONC1OVDNEINGZRACPECYb)-RAX/:顯示指定的AX寄存器當(dāng)前的內(nèi)容,并等待鍵入新值;如果不作修改,可直接回車。如:-RAX/AX0000:4321/c)-RF/:顯示標(biāo)志寄存器F各個標(biāo)志位的內(nèi)容,并等待鍵入新的標(biāo)志位;如果不作修改,可直接回車。如:-RF/NVUPEIPLNZNAPONC-ZR/運行命令G:使程序在DEBUG控制下運行,一般有全程、斷點運行兩種方式。a)-G/:控制程序由當(dāng)前IP處運行,直至程序結(jié)束。如果當(dāng)前IP為初始值,其作用則相當(dāng)于直接在DOS下運行程序,一般用于快速觀察程序的運行情況,如圖1.7所示。

-GAProgramterminated-G0008AAX=4C41DS=13B2 ES=13B213C2-GAProgramterminated-G0008AAX=4C41DS=13B2 ES=13B213C2:0008CD21normallijCX=000ASS=13C2INI41C221SP=0000BP=0000SI=0000DI=0000IP=0008 NUUPElPLZRNAPONC圖1.7運行命令執(zhí)行結(jié)果b)-G0008/:控制程序由當(dāng)前IP處運行,直至指定的斷點IP=0008H處,程序暫停,顯示各個寄存器的當(dāng)前值及斷點處指令,然后返回DEBUG提示符“-”下。如對TEST.EXE,若想觀察字符串顯示的入口參數(shù)是否設(shè)置好,則可以斷點運行至0008處:-G0008/AX=4C41BX=0000CX=000ADX=0041SP=0000BP=0000SI=0000DI=0000DS=13B2ES=13B2SS=13C2CS=13C2IP=0008NVUPEIPLZRNAPONC13C2:0008CD21 INT21斷點一般選取在需要觀察的地方,當(dāng)程序停下來后,可以根據(jù)各方面的情況(如寄存器、緩沖區(qū)、標(biāo)志等)來判斷程序是否運行正確。單步命令T:控制程序運行一條指令后暫停,顯示各個寄存器的當(dāng)前值及斷點處指令,然后返回DEBUG提示符“-”下,如圖1.8所示。例如對TEST.EXE,若當(dāng)前IP為初始值,則鍵入T命令后有如下顯示:-T/AX=0200BX=0000CX=000ADX=0000SP=0000BP=0000SI=0000DI=0000DS=13B2ES=13B2SS=13C2CS=13C2IP=0002NVUPEIPLNZNAPONC13C2:0002B241AX=0200BX=0000CX=000ADX=0000SP=0000BP=0000SI=0000DI=0000DS=13B2ES=13B2SS=13C2CS=13C2IP=0002NVUPEIPLNZNAPONC13C2:0002B241MOVDL,41圖1.8單步命令執(zhí)行結(jié)果單步命令一般用于需對程序運行作仔細(xì)分析的地方,如判斷分支轉(zhuǎn)移、觀察運算結(jié)果等。若能綜合運用斷點及單步指令,則可大大提高DEBUG調(diào)試的速度及效率。但應(yīng)注意,當(dāng)IP指針位于INT21H—類指令處時,執(zhí)行T命令將會使程序進(jìn)入該功能調(diào)用子程序中,因此,這種情況下最好不用T命令,而用斷點運行命令跳過該類功能調(diào)用指令。修改存儲單元命令E:—般常用以下二種形式:a)-E[起始地址][內(nèi)容表]/:按內(nèi)容表的內(nèi)容修改從起始地址開始的多個存儲單元內(nèi)容,即用內(nèi)容表指定的內(nèi)容來代替存儲單元當(dāng)前內(nèi)容,如圖1.10所示。例如:一EDS:0100ABC1234表示從DS:0100為起始單元的連續(xù)五個字節(jié)單元內(nèi)容依次被修改為'A'、'B'、'C'、12H、34H。阿命令提示符-DEBUGTEST.EXE-EDS:0100-EDS:011013B2:0110-DDS:010013B2:01QQ13B2阿命令提示符-DEBUGTEST.EXE-EDS:0100-EDS:011013B2:0110-DDS:010013B2:01QQ13B2:011013B2:012013B2:013013B2:014013B2:015013B2:016013B2:B170-DDS:010013B2:010013B2:011013B2:0120JABCJ,12,3426.55 39.6645764D4B45375525E0372ABB65A22A10881E2710376CBB4037442F8808442676DEAF264604358F046215BB2F4D115B45882F070458192ED3BA19200F3C88204699658DB28825F5B4264C-CD39-5746-F846-F889-478B-EC03-FEFF-2A4C-CD39-571C99630F2088088F21

0C8601F60D86029AF781026FF88B156F5FFFB8175FB9FE8621B9801505708069947704690EEC554C0E63AA92676340FF800A40B5666CE8B587552E7387-|n|x|圖1.10修改存儲單元命令執(zhí)行結(jié)果b)-E[地址]/:逐個修改指定地址單元的當(dāng)前內(nèi)容。女口:一EDS:0110/13B2:011026.55其中13B2:0110單元原來的值是26H,55H為輸入的修改值。若只修改一個單元的內(nèi)容,這時按回車鍵即可;若還想繼續(xù)修改下一個單元內(nèi)容,此時應(yīng)按空格鍵,就顯示下一個單元的內(nèi)容,需修改就鍵入新的內(nèi)容,不修改再按空格跳過,如此重復(fù)直到修改完畢,按回車鍵返回DEBUG“-”提示符。如果在修改過程中,將空格鍵換成按“-”鍵,貝I」表示可以修改前一個單元的內(nèi)容。顯示內(nèi)存命令D:以十六進(jìn)制及ASCII兩種方式顯示內(nèi)存區(qū)的二進(jìn)制數(shù)據(jù),通常用來觀察數(shù)據(jù)段內(nèi)的緩沖區(qū)內(nèi)容。一般常用以下二種形式:a)-D/:從0000單元開始,連續(xù)顯示128個內(nèi)存單元的內(nèi)容,如果繼續(xù)鍵入D命令,貝繼續(xù)顯示后128個單元內(nèi)容。例如:-DDS:0100/13B2:0100414243123421B44C-CD218B46068B5608ABC.4!.L.!.F..V.13B2:01105566470A75092639-570C7503E909FF26UFG.u.&9W.u????&13B2:01707DFF80720B8A5DFF-2AFF38A7C401751D>..r..j.*.8...u.在上例中,128個單元分成8行,每行16個單元,每個單元的內(nèi)容分別以十六進(jìn)制形式和ASCII碼形式顯示。如果該單元的內(nèi)容不是可顯示字符,則在AS

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論