精华区 [关闭][返回]

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

主题:Soft-ice使用手册 四章8
发信人: sanvador()
整理人: webfan(2000-08-08 20:49:25), 站内信件

设定读写内存断点
我们设置了原始断点和条件表达式,这样就可以得到指定POLYDEMO窗口的数据结
构的地址。这个值存在窗口的扩展数据区,是一个全局句柄。LockWindowsInfo函
数取得这个全局句柄并使用Win32 API LocalLock将它转换成可以用来访问窗口常
量数据的一个指针。
1. 执行到57行的return语句来得到这个窗口常量数据的指针值。
:G .57
2. Win32 API函数将32位值返回到EAX寄存器。因此你可以使用BPMD命令并指定
EAX寄存器在常量数据指针上设置一个内存断点。
:BPMD EAX
BPMD命令使用由Intel CPUs所提供硬件调试寄存器来监视线性地址中对DWORD值的
读写(就是双字节地址)。本例中,你使用BPMD来跟踪(trap...搞过汇编的人都
应该知道是什么意思,我还没有找到一个恰当的词汇来形容它,先用"跟踪"来解
释吧!)对第一个窗口常量数据的DWORD值的读写访问。
3. 用BL命令检验内存断点的设置。类似于输出如下
:BL
00) BPX LockWindowInfo IF ((ESP-)4)== 0x100172
01) BPMD #0023:001421F8 RW DR3
断点0是位于LockWindowInfo上的执行断点,断点1是BPMD在窗口常量数据上的断
点。
4. 使用BD命令禁用LockWindowInfo上的断点。
:BD 0
SoftICE提供BC(清除断点)和BD(禁用断点)命令来清除或禁用断点。当你调试
过程中还想用到某个断点的话,禁用它。如果你不再使用某个断点了,清除它比
较好。
5. 用BL命令查看在LockWindowInfo上禁用的断点。SoftICE在断点索引之后放置
一个星号(*)以表示它被禁用了。
:BL
00)* BPX LockWindowInfo IF ((ESP-)4)== 0x100172
01)  BPMD #0023:001421F8 RW DR3
注意:你可以使用BE命令重用断点:
:BE breakpoint-index-number
6. 退出SoftICE
当POLYDEMO窗口访问它窗口常量数据的第一个DWORD值时断点触发,SoftICE弹出

当由于内存断点触发而使SoftICE弹出,你应该是在RolyRedraw或PolyDrawBez函
数里。这两个函数都访问POLYDRAW窗口常量数据区偏移量为0的nBez Total区域。

注意:Intel CPU的体系结构将内存断点定义为traps,就是在内存被访问之后断
点才被触发。在SoftICE中,被突出显示的指令或源代码行是访问内存指令之后的
下一条语句。
7. 用BC命令清除所设置的断点。
:BC *
注意:你可以在BC、BD、BE命令中使用通配符来对所有断点进行操作。
8. 推出SoftICE
操作系统结束程序运行。

庆祝你完成了第一个SoftICE的调试过程。本次调试中,你跟踪了源代码,看了本
地数据和结构,设置了一次性、条件和内存断点。SoftICE还有很多更高级的命令
。ADDR、HEAP、LOCALS、QUERY、THREAD、TYPES、WATCH和WHAT仅仅是SoftICE许
多命令中的一部分。它们可以使你更加灵活快速的调试。参考SoftICE命令参考手
册来得到所以SoftICE命令的解释。


(页眉的格言)The devil is in the details.
Descarts
第四章 将代码装入SoftICE
调试的概念
SoftICE允许你在源代码的层次上调试应用程序和设备驱动程序。要做到这一步,
SoftICE使用了一个叫做Symbol Loader的工具。由它将编译模块的调试信息转换
成.NMS的符号文件。Symbol Loader可以将.NMS文件和源码装入到SoftICE中,以
供调试。
什么时候装入.NMS文件依赖于你所要调试的模块是运行在操作系统启动之后,还
是设备驱动程序或静态VxD,在操作系统初始化之前就已经载入了。如果你要装入
设备驱动程序或VxD,SoftICE在其初始化是就要预装入模块的符号和源码。如果
你调试的模块、组件运行于操作系统启动之后,你可以在需要的时候用Symbol L
oader装入。
本章介绍了如何使用Symbol Loader将模块装入到SoftICE中。本章也解释如何使
用Symbol Loader在DOS命令行模式自动完成许多常用的任务和使用Symbol Loade
r命令行工具NMSYM来建立批处理过程转换和载入符号信息。
注意:Symbol Loader仅支持Windows程序。要调试MS-DOS程序,使用UTIL16路径
下的工具。

------------------------------------------
唉,好多天都没有干正经的事情了。我可要痛改前非了!!
感觉很累,不知道是什么缘故。

真的希望这些文章可以给你以帮助。让你找到成功的感觉。无论你做了什么...只
要你能快乐...我亦快乐。

Sanvador.KT

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

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

[关闭][返回]