SoftICE使用說明(三)

30分鐘內學會 DEBUG

 

§3.1 序言

 

Soft-ICE 的所有動作都發生在一個可以隨時叫出的視窗中。Soft-ICE 的所有指

令都可以顯示在一個小視窗中,但這個視窗可以擴大到整個螢幕。當你把

Soft-ICE

當做其它除錯程式的助手使用時,你可能會使用小視窗。當你把 Soft-ICE 當獨立

 

除錯器用時,你可能會使用大視窗。

如果你使用原來磁片上的設定檔( S-ICE.DAT ),那視窗一開始是佔滿整個螢幕

的。

 

§3.2 叫出視窗

 

載入Soft-ICE後,你可以隨時叫出視窗。一開始你只要按Ctrl-D即可叫出

Soft-ICE

使用ALTKEY的指令可以更改此熱鍵。(參閱§5.8)

 

§3.3 由視窗中返回

 

使用 X 這個指令或你叫出 Soft-ICE 的熱鍵均可以回到原先的畫面。你在

Soft-ICE

中設定的所有中斷點此時開始啓動。

 

§3.4 改變視窗大小

 

你可以改變Soft-ICE視窗的寬度和高度。在獨立模式中顯示程式碼時,改變視窗大

的功能特別有用。視窗的高度爲 8 25 行。按

Alt 使視窗變高

Alt 使視窗變短

 

使用 WIN 的指令以改變視窗的寬度。( 參閱 §5.9)直接輸入WIN而不加參數

會在

下面兩種模式中切換:

 

WIDE 模式 --- 佔滿整個螢幕

NARROW 模式 --- 46 個字元寬

 

有些指令像 D E R U ,使用 WIDE 模式以顯示更多訊息時較爲方便。

 

§3.5 移動視窗

 

Soft-ICE 的視窗是可以移動且可以定位在螢幕上的任何地方。這功能在NARROW

式下

特別有用。在你需要時移動視窗以便觀看螢幕上被視窗擋到的地方。你可以用下列

鍵控制螢幕的移動:

 

Ctrl 向上移一行

Ctrl 向下移一行

Ctrl 向右移一列

Ctrl 向左移一列

 

§3.6 行編輯按鍵

 

Soft-ICE 容易使用的行編輯器讓你可以叫回並編輯上一個指令。它的功能類似

那些有名的 CED 行編輯器。以下按鍵可以幫助你在命令窗中編輯指令:

 

--- 遊標右移

--- 遊標左移

Ins --- 切換插入模式

Del --- 消除現在字元

Home --- 把遊標移到一行的開頭

End --- 把遊標移到一行的結尾

--- 顯示上一個指令

--- 顯示下一個指令

Shift - --- 顯示向上卷一行

Shift - --- 顯示向下卷一行

Page Up --- 顯示向上卷一頁

Page Down --- 顯示向下卷一頁

BackSpace --- 消除前一個字元

Esc --- 取消目前命令

 

當遊標在資料窗或程式碼窗時,另有特殊的按鍵,這在後面將會討論到。

 

§3.7 動作狀態行

 

在螢幕底部的狀態行提供指令語法的輔助。

 

§3.8 指令語法

 

Soft-ICE 是個由指令操控的除錯工具。要令 Soft-ICE 有動作,你要下指令給

它。指令可以因不同參數而有改變。

 

所有的指令都是 1 6 個字元的字串且不分大小寫。所有的參數都是字串或

運算式。

 

運算式是典型的數字,也可以是數字和運算子的結合。所有的數字均以 16

位表示。一個位元組 (byte) 參數有 2 位,字組 (word) 參數有 4 位。雙字組

 

(double word) 是兩個由 分隔的字組參數。以下是一些參數的例子:

 

12 --- 位元組參數

10FF --- 字組參數

E000:0100 --- 雙字組參數

 

暫存器在運算式中可以拿來當位元組或字組參數用。例如: U CS:IP -10 的指

令會從現在指令指標所指位址向前 10 byte 開始反組譯。以下的暫存器名稱可以

在運算式中:

 

AL AH AX BL BH BX CL CH CX DL DH DX DI

SI BP SP IP CS DS ES SS FL

 

§3.8.1 指定記憶體位址

 

許多 Soft-ICE 的指令要求以記憶體位址當參數。一個記憶體位址是由兩個

16 位元的字組中間以分號 (:) 分隔而組成的。第一個字組表示節段位址

(segment

address) 而第二個字組表示差距位址 (offset segment)

 

公用符號可以在所有 Soft-ICE 指令中用來取代位址。公用符號必需先由

Soft-ICE 的程式載入器 (LDR.EXE) 載入。參閱第七章以取得使用公用符號的完

 

整說明。

 

Soft-ICE 運算式的運算器接受一些特殊字元和位址的使用。這些字元是:

 

$ --- 現在 CS:IP 所指的位址

@位址 --- 間接雙字組

.number --- 原始程式碼行號

 

當你要輸入目前指令指標的位址時,可以用 $ 代替 CS:IP

 

使用 @ 可以讓你參考到位址所指處的雙字組。你可以使用多層的 @

 

如果用 . 來代表位址,它是用來代表原程式碼中的行號,而非實際的位址。

這只有在原始程式碼有載入的情形下才能使用。這種情況下,位址是以 10 進位

 

表示。

 

例如:

 

U.1234 --- 從原始程式碼第 1234 行開始反組譯

U $-10 --- 從目前指令指標所指處向前 10 byte 開始反組譯

G @SS:SP --- 假如你目前正在第一個中斷程序,下這個指令會在堆疊的

返回位址設個暫時中斷點並跳過此中斷程序。

 

§3.9 功能鍵

 

功能鍵可以代替一串 Soft-ICE 中之指令。功能鍵可以由命令行設定或從

S-ICE.DAT 中定義。

 

Soft-ICE 磁片上原來的 S-ICE.DAT 已經對 12 個功能鍵有設定。你可以在任

何時候改變任何一個設定。個鍵定義如下表所示。這樣設計是爲了方便微軟的

CodeView 的使用者。

 

F1 --- 顯示一般輔助畫面 ( H; )

F2 --- 在暫存器窗中切換 ( ^WR; )

F3 --- 改變目前原始碼的模式 ( ^SRC; )

F4 --- 回覆視窗 ( ^RS; )

F5 --- 回到原程式 ( ^X; )

F6 --- 在命令窗中和程式碼窗中切換 ( ^EC; )

F7 --- 執行到遊標所在那行 ( ^HERE; )

F8 --- 單步執行 ( ^T; )

F9 --- 在遊標所在那行設中斷點 ( ^BPX; )

F10 --- 單步執行 ( ^P; )

F11 --- 執行到返回位址 ( ^G @SS:SP; )

F12 --- 顯示 Soft-ICE 的版別 ( ^VER; )

 

指令前的 ^ 會讓這個指令不顯示出來。指令後的 ; 則代表按下 Enter 。輸入

FKEY 的指令可以顯示目前功能鍵所代表的意義。要使用功能鍵直接按下功能鍵即

,不需再鍵入指令。要自定功能鍵,參閱 §5.8 FKEY 指令的解說或第六章有

S-ICE.DAT 設定功能鍵的部份。

 

§3.10 輔助

 

利用輔助的指令可以得到有關指令的簡單解說、語法和使用例子。要得到輔助

的資訊,鍵入:

 

? H --- 顯示所有指令和運算子的簡短解說

 

? 指令 H 指令 --- 顯示關於指令語法和例子更詳細的資訊

 

? 運算式 H 運算式 --- 把運算式的結果以 16 10 進位及 ASCII

顯示出來

 

§3.11 課程

 

(好多喔....偷懶一下,跳過去吧!)

 

 

――――――――――――――――――

――――――――――――――――――

 

第二節包括每個指令的語法、解釋及範例。所有的數字均以 16 進位表示。使

用到 + - * / 或暫存器的數字均可視爲運算式。所有的指令都不區分大小寫。

指令語法敘述中的斜體字需以真實的值代替而不是打入斜體字。

 

以下是本節中所使用的代號:

 

[ ] --- 語法中非必用的部份

 

< > --- 可選用的部份

 

 

X|Y --- 使用 X Y X Y 擇一使用

 

count --- count 指定中斷點條件要成立幾次纔會真正引發中斷。如果沒

有設定,內定值是 1 。每次引發中斷而叫出 Soft-ICE 的視窗

後,記數器自動回覆爲原先指定值。

 

verb --- 指定在什麼狀況下中斷點會做用。R 代表讀取;W 代表寫入;

RW 代表讀取及寫入;X 代表執行。

 

address --- 位址。由兩個 16 位元之字組以冒號分隔而組成。第一個字組

代表區段位址,第二個字組代表差距位址。位址可以由符號或

暫存器構成,也可以包括 $ . @ 等特殊符號。參閱

§3.8 以取得更多資訊。

 

break-number --- 中斷點號碼是在你修改中斷點(即編輯、刪除、重新啓動

、暫停作用)時使用的。它是用來代表各中斷點的代碼。

中斷點號碼是由 0 F

 

list --- 一串由逗號或空白分隔的中斷點號碼。

 

mask --- 1 0 X 所構成的位元遮罩。X 代表不處理的位元。

 

例如: BPIO 21W EQ M 1XXX XXXX

如果 21 埠被寫入且造成其高位元被設定則會引發中斷。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章