精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● 软件使用>>★软件课堂★>>Soft-ice使用手册>>Soft-ice使用手册 七章18

主题:Soft-ice使用手册 七章18
发信人: sanvador()
整理人: Kingpin(2000-08-08 20:56:55), 站内信件

第七章 使用断点
介绍
你可以使用SoftICE在程序执行、内存读写、中断和读写I/O端口时设置断点。So
ftICE为每一个断点指定一个断点索引,从0到FF。当你设置、删除、禁用和启用
断点时你可以使用断点索引来区分它们。
SoftICE的所有断点都是附着型的,就是说SoftICE跟踪并维护断点直到你使用BC
或BD命令有意清除或禁用它。在你清除一个断点之后,你可以使用BH命令来重新
使用它。BH命令显示断点的历史记录。
在SoftICE中你一次可以设置256个断点。但是,你总共能在内存(BPMs)和I/O端
口(BPIOs)中设置的断点数是4个,这是由于x86处理器的限制。
当符号信息存在时,你能使用函数名来设置断点。当处于源码或混合模式时,你
能在任何源码行处设置一次性断点。一个有用的特性是你可以在一个模块实际载
入之前设置一次性断点。

SoftICE所支持的断点类型
SoftICE提供了一批强有力的断点能力,完全利用了x86体系结构的特性。如下:

  执行断点:SoftICE以INT 3代替当前的指令。你可以用BPX命令设置执行断点。


  内存断点:当特定内存的字节/字/双字读、写或执行时,SoftICE利用x86调试
寄存器来中断。你可以用BPM命令设置内存断点。

  中断断点:SoftICE通过修改IDT(中断解释表)向量来截取中断。你可以使用
BPINT命令来设置中断断点。

  I/O断点:SoftICE利用在奔腾和增强奔腾CPU中的扩展调试寄存器来监视去向特
定端口地址中的IN或OUT指令。你可以使用BPIO命令来设置I/O断点。

  窗口消息断点;SoftICE跟踪出现在窗口中特定的或一个范围内的消息。这不是
一个基本的断点类型。它建立在其它原始断点之上,仅为了提供方便使用的特性
。你可以用BMSG命令来设置窗口消息断点。

  断点选项
你可以用下面两个选项来限制每一种断点类型。
  条件表达式[IF expression]:条件表达式的值为非零(TRUE)触发断点。参考
后面的条件断点。
  断点活动[DO "command1;command2;...']:当断点触发时可以自动执行一系列
的SoftICE命令。这个特性使你能用用户定义的宏来自动化比较麻烦的任务。参考
后面的设置断点活动。
注意:参考SoftICE命令参考手册以得到每一个断点命令的完整信息。

  执行断点
执行断点跟踪执行中的代码,如函数调用或指令语句(language statement)。
这是最经常使用的断点类型。通过将存在的指令以INT 3指令代替,SoftICE在(
程序)执行到INT 3断点后取得控制权。
SoftICE提供两种方式设置执行断点:使用鼠标和用BPX命令。下面两节介绍如何
 用这两种方式来设置断点。
用鼠标设置断点
如果你使用奔腾处理器并有鼠标,你能使用鼠标来设置或清除附着和一次性断点
。要设置附着断点,双击你想设置断点的行。SoftICE突出显示这一行以指示你设
置了一个断点。再次双击这一行清除断点。要设置一次性断点,单击你想设置断
点的行然后使用HERE命令(F7)执行到此行。
用BPX命令设置断点
使用BPX命令和下面的参数来设置执行断点:
BPX [address][IF expression][DO "command1;command2;..."]
IF expression 参考后面的条件断点
DO "command1;command2;..." 参考后边的设置断点活动
例子:要在你的应用程序中的WinMain函授上设置一个断点,使用下面的例子:

BPX WinMain
-----------------------------------
呵呵,今天表弟来玩一些日子,所以工作的少了。以后再发帖子,就改在下午吧


Sanvador.KT
[email protected]

--
无意苦争春
一任群芳妒
零落成泥碾作尘
依旧香如故

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.110.29.171]

[关闭][返回]