dos除錯工具之debug

2021-06-21 05:58:26 字數 3574 閱讀 9694

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[位址] [碟符:] [起始扇區] [扇區數] 寫盤命令

功能: 將修改過的資料寫到磁碟上。

說明: 可以將指定記憶體位址開始的資料寫在磁碟上,可以在沒有指定引數, 或指定位址引數的情況下,將除錯檔案寫在磁碟上。

除錯工具 之Python除錯工具pycharm

1 pycharm的安裝 pycharm是一款非常好用的python ide,提供專業版和社群版,就像eclipse和myeclipse一樣,專業版是收費的,而社群版是免費的但功能就沒有專業版的功能強大。1.2 安裝 這裡就不必細說,直接next就ok ps 安裝完成後一定要執行 1.3 破解 採用...

Android除錯工具之ADB

android除錯工具之adb 1.什麼是adb adb的全稱為android debug bridge,顧名思義,這個是pc機與android裝置的連線橋。簡單的說,就是通過adb pc可以控制與之相連的android裝置。通過adb我們可以在eclipse中方面通過ddms來除錯android程...

php除錯工具之firephp

最近發現了很多php的專有除錯工具相當的強大,為我們節省了很多人力物力。firephp是一款和firebug一起使用的除錯工具,在火狐瀏覽器的外掛程式管理器中查詢firephp安裝即可。需要事先安裝好firebug 第一步 第二步 我們在需要除錯的php檔案中呼叫 fb ccc 這個方法,多個變數採...