dos調試工具之debug

來源:互聯網
上載者:User


DEBUG是一個DOS公用程式,是供程式員使用的程式調試工具,可以用它檢查記憶體中任何地方的位元組以及修改任何地方的位元組。它可以用於逐指令執行某個程式以驗證程式啟動並執行正確性,也可以追蹤執行過程、比較一個指令執行前後的值以及比較與移動記憶體中資料的範圍,讀寫檔案與磁碟扇區。     DEBUG把所有資料都作為位元組序列處理。因此它可以讀任何類型的檔案。DEBUG可以識別兩種資料: 十六進位資料和ASCⅡ碼字元。它的顯示格式是各個位元組的十六進位值以及值在32與126之間的位元組的相應ASCⅡ碼字元。
在DEBUG中輸入資料有兩種方法: 提示方法和非提示方法。在用提示方法時,使用者可以輸入要求輸入資料的命令,後跟資料所要輸入的地址。然後使用者就可以看到該地之中已有內容及一個冒號提示符。此時使用者可以在提示符下輸入一個新的值或者按下斷行符號鍵或CTRL+C回到短橫(-)提示符。在運用非提示方法時,使用者可以輸入要輸入資料的記憶體位址以及要輸入的位元組。但與使用文書處理程式或本文編輯程式時不一樣,在使用DEBUG時,使用者不能直接移動游標到一進入點輸入或修改資料,而要一次輸入一個或幾個位元組。
在使用DEBUG時可以只涉及記憶體中的資料,從而一般都要指定所要處理的記憶體位址,地址的輸入格式是: [段地址]: [位移]。如果沒有輸入地址,DEBUG將假定為當前記憶體段,從位於地址100H的位元組開始。前100H位元組保留給程式段首碼使用,這一私人區域用於建立DOS與程式之間的聯絡。DEBUG總是用四位十六進位數表示地址。用兩位元表示十六進位資料。
講到這裡大家應該對DEBUG有了初步的瞭解,但是光知道這些可不夠,接下來我來講講DEBUG的命令格式和命令。當輸入
DEBUG
調用了DEBUG程式,就會出現一個短橫提示符,使用者就可以在這一短橫後輸入DEBUG程式的命令。有些DEBUG命令會顯示一個記憶體位址併產生一個作為提示符的冒號。在這些提示符後,使用者可以輸入一個新值以改變所顯示位置原來的值。如果使用者不輸入一個新值而是按下斷行符號或CTRL+C,那麼原來的值不會改變。
一般用不著把地址和命令名字分開。例如,用轉儲命令D察看100號地址的資料,那麼這個命令可以用以下任一種形勢輸入: 
D100
D 100
D。100
D,100
如果輸入的命令中出現了錯誤,DEBUG將在下一行對著錯誤的位置標記出來,例如: 
-s100 d 12
^Error
DEBUG的命令及功能如下: 
* A[地址] 彙編命令
功能: 將指令直接彙編成機器碼輸入到記憶體中。
說明: 用於小段程式的彙編及修改目標程式,所有輸入的數字均採用十六進位, 使用者裝入記憶體的彙編語句是連續存放的,若沒有指定地址,並且前面沒有使用彙編命令,改語句被彙編到 CS:0100地區。

* C[源位址範圍][目的地址]比較命令
功能: 比較兩記憶體地區中的內容是否相同,若不同則顯示其地址和內容。

* D[地址] 或D[起始地址][目的地址] 轉儲命令
功能: 以記憶體映象方式顯示記憶體中的資訊。
說明: 轉儲用左右兩部分顯示記憶體映象內容,左邊以十六進位,右邊以ASCII字元顯示,所有不可列印字元用句號(。)表示。每行顯示16個位元組的內容,在第八和第九個位元組之間有一個連字號 - 此命令隱含的段地址為DS的值。若未指定起始地址,則D命令從顯示的最後一個單元的下一個單元開始顯示,若以前沒有使用給D命令, 則從初使化的段寄存器的內容,加上地址位移量 0100H 開始顯示。

* E[地址] [位元組串) 修改記憶體命令
功能: 從指定的地址開始修改記憶體值。
說明: 若地址部分只輸入位移量,則 E 命令認為段包括在DS寄存器中。命令格式有兩種:其一是用命令中包含的位元組串替換從指定的地址開始的多個位元組的內容;其二是命令後不跟位元組串,則允許按順序方式顯示和修改位元組,按下空格鍵為顯示下一位元組內容,若想修改,直接輸入相應值。

* F[位址範圍] [位元組或位元組串] 填寫命令
功能: 將要填寫的位元組或位元組串填入由位址範圍指定的儲存空間中。

* G[=起始地址] [[斷點]……] 執行命令
功能: 執行正在調試的程式,當達到斷點時停止執行, 並且顯示寄存器標誌和下一條要執行的命令。
說明: 如果沒有指定起始地址,那麼當前指令地址由CS,IP寄存器的內容來決定,如果使用者指定起始地址就從指定的起始地址開始執行。如果指定斷點,當指令到達指令地址時停止執行,並顯示各寄存器標誌位的內容和下一條要執行的命令,最多允許使用者設定10個斷點。

* H[數值][數值] 十六進位算術運算命令
功能: 分別顯示兩個十六進位數相加的和以及第一個數減去第二個數的差。
說明: 替使用者完成簡單的十六進位數的運算。

* I[連接埠地址]
功能: 從指定的連接埠輸入並顯示(用十六進位)的一個位元組。

* L[地址][盤號:][邏輯扇區號][扇區數]
功能: 將一個檔案或盤的絕對扇區裝入儲存空間。
說明: 單個L命令能夠裝入的最大扇區數是 80H,其中盤號 0,1,2,3……分別代表 A,B,C,……出現讀盤錯,顯示錯誤資訊。

* M[位址範圍][起始地址] 資料傳送命令
功能: 把位址範圍內的儲存空間單元的內容移到起始地址的指定地址中
說明: 傳送期間,源區和目標區可以部分重疊;傳送後來源區域資料保持不變。

* N[盤號: ] [路徑] [檔案名稱] [副檔名]
功能: 定義操作檔案名稱。
說明: 可同時定義兩個操作檔案,並將形成的檔案控制區相應的設定在記憶體 CS:5C和CS:6C上,供以後的L和W命令操作之用。

* O[連接埠地址][資料] 輸出命令
功能: 發送位元組到指定的輸出連接埠。

* P[=地址] [資料] 進程命令
功能: 將一個子程式調用指令,迴圈指令,中斷指令或一個重複字串指令,停止在下一條指令上。
說明: 在執行一條子程式調用指令,迴圈指令,中斷指令或一個重複字串指令時,發出P命令去執行有關指令,並且返回到要執行的下一條指令。P命令與T 命令有相同的句法。

* Q 退出命令。

* R[寄存器] 寄存器命令
功能: 一,顯示單個寄存器的內容,並提供修改功能。 二,顯示所有寄存器內容, 再加上字母標誌位狀態以及要執行的下一條指令。 三,顯示8個標誌位狀態, 並提供修改功能。

* S[位址範圍] [字串]
功能: 在指定的位址範圍內尋找給定的字串。
說明: 用來指定在位址範圍內尋找一個字串,若找到則顯示其地址, 否則直接顯示DEBUG提示符。隱含地址為DS段值。

* T[=地址][指令條數] 跟蹤命令
功能: 逐條跟蹤程式的執行,每條指令執行後都將顯示各寄存器的內容。
說明: 通常採用跟蹤一條指令,但使用者也可以用指令條數設定一次跟蹤多條指令, 每執行一條指令之後,顯示所有寄存器的內容和標誌狀態。

* U[起始地址]或者[位址範圍]
功能: 將記憶體中的內容轉換為彙編語句。
說明: 反組譯碼的位元組數取決與使用者的系統顯示形式,以及在U命令中使用的可選項。

* W[地址] [盤符:] [起始扇區] [扇區數] 寫盤命令
功能: 將修改過的資料寫到磁碟上。
說明: 可以將指定記憶體位址開始的資料寫在磁碟上,可以在沒有指定參數, 或指定地址參數的情況下,將調試檔案寫在磁碟上。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.