SoftICE for WIN95中文命令解说(二)
网站建设 2021-07-03 09:42www.dzhlxh.cn网站建设
SoftICE for WIN95中文命令解说(二) Copyright (c) 1999 http://coobe.cs.hn.cninfo.net/~tianwei 命令: BC 作用: 清除一个或多个断点 语法: BC list | * 用法: 清除断点后,用BL命令就看不到断点列表, 且被清除的断点不再起作用.参数: list: 可以是将要清除的一系列断点,中间用空格或逗 号隔开.* : 清除所有的断点. 点评: BC==Breakpoint Clearing 命令: BD 作用: 使一个或多个断点失效 语法: BD list | * 用法: 使某个断点失效不同与 BC 命令的清除,暂时失效的断点可以用 BE 命令来恢复.而 BC 命令是彻底清除.参数:list: 可以是单个,也可以是一系列断点, 中间用空格 或逗号隔开.* : 禁止所有的断点. 点评: BD==Breakpoint Disablling 命令: BE 作用: 使一个或多个断点恢复有效 语法: BE list | * 用法: 用来恢复前次用 BD 命令使之失效的断点. (每当新定义断点或编辑断点时,系统自动将其置为有效)参数:list: 可以是单个,也可以是一系列断点, 中间用空格 或逗号隔开.* : 恢复所有的断点. 点评: BE==Breakpoint enablling 命令: BH 作用: 在SoftICE历史数据库中显示或是选择曾经设过的断点 语法: BH 用法: 用BH命令后,SoftICE将显示一个表,每一行是一个断点,都是以前使用者曾经下过的断点, 这时可以用上下光标键来定位,用INSERT键选择,再用ENTER键来确定. 用ESC键取消.SoftICE只记录最近的32个断点. 而且只在WIN95正常退出后记录(记录到WINICE.BRK中), 这样就有一个问题.如果你在MSDOS.SYS配置中是BootGUI=1的话(即最正常的启动方式),当你SHUT DOWN机器时,控制并不回到SoftICE手中,就无法记录刚才的断点.这时只有改为BootGUI=0. 点评: 注意:SoftICE只在SHUT DOWN时记录,如果你用"重新启动并切换...",那是不行的.至少在我的V3.20是不行的.而且,如果你"重新启动并切换...", 再用EXIT命令想退回到WIN95,很容易出现VxD联接错.因为这样 WINICE并没有完全退出内存,用 MEM.EXE可以看到这点.所以,SoftICE的使用者最好在MSDOS.SYS中将上面所说的Boo-tGUI置为0.如果怕这样用多重配置的话还要每次开机敲一个WIN,可以在AUTOEXEC.BAT中改动,加入WIN.COM.(可不要在WINICE.EXE后再加WIN.COM!画蛇添足!)若用SoftICE次数不多的话, 可以每次启动WINDOWS后,再重新启动并切换到MS-DOS方式,再打WINICE.EXE, 这样也可以的. BH的好处是,可以省去纸笔, 下次重调试这个程序时,不用再挖空心思想断点了. 命令: BL 作用: 显示当前所设的断点 语法: BL 用法: BL 命令显示当前所有断点的序号 (这个序号被BC BEBD 等命令所用),类型,是否被禁止等信息.如果是被禁止的断点,会在序号后跟一个"*"号.比如用上面提到的BD 命令会产生这种效果) 点评: BL==Breakpoint listing 命令: BMSG 作用: 在WIN95的消息上下断点 语法: BMSG window-handle [L] [begin-msg [end-msg ]][IF expression][DO "command1;command2;..."] 用法: window-handle: 消息发向的窗口句柄begin-msg : 消息标识字的范围,如果没有end-msg ,那么只在begin-msg上下断点, 否则 在区域内所有消息都会被下断点end-msg : 见上.IF-expression: 表达式的值为真时,SoftICE才弹出.DO "command1;command2;...": 当到达断点时,执行的一系列SoftICE 命令.L : 表示不弹出SoftICE,而是在命令窗口 中记录WIN95消息.上面只有窗口句柄是必需的,其他都是可选项. 如果没有指定在哪个MSG上下断点, 那么所有发向该窗口的消息都会被拦截.窗口句柄可以用HWND命令来观看,MSG标识符可以用 WMSG 命令来察看,可以是16进制的数, 也可以用习惯的书写方式,如:WM_CREATE.SoftICE弹出后,会停在处理该消息的过程的第一句代码上. 点评: BMSG=(set)Breakpoint on MeSsaGeWINDOWS本身是由消息驱动的, 所以跟踪一个消息会得到相当底层的答案,我主页上一篇"修改RICHWIN4.3"的文章就是一个例子. 命令: BPE 作用: 编辑一个已存在的断点. 语法: BPE index_number 用法: index_number: 断点的序号,用 BL 命令可以看到.用BPE命令可以很方便地修改一个已经存在的断点, 但要注意一点: BPE 在执行时,会先将你所要修改的断点清除,然后再将改过的使能,如果你在修改时按ESC键退出修改,那么原先的断点也就不存在了, 修改错误的结果也是一样的.原先的断点消失. 点评: 参见后面的 BPT 命令.