发信人: 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]
|
|