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 埠被写入且造成其高位元被设定则会引发中断。

 
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值