| SoftIce 使用手冊 3 來源:Chi-hao Tseng |
第 三 章 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 課程
(好多喔....偷懶一下,跳過去吧!)