荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: comet (流云), 信区: Hacker
标  题: softice中文说明(3)(转载)
发信站: 深圳大学荔园晨风站  (Fri Dec 12 21:51:02 1997) , 转信

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

--
※ 来源:·深圳大学荔园晨风站 bbs.szu.edu.cn·[FROM: www-post@linux.szu.e]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店