SoftICE for WIN95中文命令解说(六)
程序员文章站
2024-01-01 08:55:46
SoftICE for WIN95中文命令解说(六) Copyright (c) 1999 http://coobe.cs.hn.cninfo.net/~tianwei 命令: FAULTS 作用: 打开或关闭错误跟踪功能 语法: FAULTS [on | off] 用法:... 08-10-08...
softice for win95中文命令解说(六) copyright (c) 1999 http://coobe.cs.hn.cninfo.net/~tianwei 命令: faults 作用: 打开或关闭错误跟踪功能 语法: faults [on | off] 用法: faults 命令将打开或关闭softice的错误跟踪功能.不加参数将显示当前的开关状态. 点评: 由于softice做为一个debugger,faults 默认为on, 所以一旦cpu有非法指令,softice就会不停地弹出, 让你知道错在哪里,实际在工作中这样的情况如果太频繁地发生,最好将其置为off.我一般将其置为on, 当发生非法指令时再手工置为off.你也可以在winice.dat 中一开始就置其为off. 初学者一般不知道有这个命令, 一旦发生非法指令,除了按r键,只有傻站着;) 命令: file 作用: 显示或切换当前源文件 语法: file [[*]file-name] 用法: file 命令常用来辅助在源文件中没有符号表的地方下断点. 用file命令将所需的源文件显示在代码窗口中,用ss 命令查找一下,再用bpx或f9来下断点.如果加文件名参数,则所选的文件变成当前文件, 并被显示在代码窗口中. 如果没有文件名参数,则显示当前的源文件(如果当前有的话).如果加 * ,则列出当前符号表中所有源文件. 在win95中,用file 加文件名同时也切换内存地址内容. 点评: 一般用于高级编程工具的辅助调试,如c语言等.不过这些编程工具已经内置debugger,所以就看个人习惯了. 命令: fkey 作用: 显示或修改当前快捷键定义 语法: fkey [function-key string] 用法: function-key: 快捷键:f1 - f12 : sf1 - sf12 : shift键加f1 - f12cf1 - cf12 : ctrl键加f1 - f12 af1 - af12 : alt键加f1 - f12 string : 一个或多个softice的命令. 命令前加 ^ 表示在按快捷键时不显示 相应的命令内容.命令后加;代表回车.fkey 后只跟function-key,而不跟string,将取消该快捷定义.除了用fkey命令可以定义快捷键外,用softice的loader也能做到这一点默认快捷键清单:f1=h; f2=^wr;f3=^src; f4=^rs;f5=^x; f6=^ec;f7=^here; f8=^t;f9=^bpx; f10=^p;f11=^g @ss:esp; f12=^p ret;sf3=^format; cf8=^xt;cf9=trace off; cf10=^xp;cf11=show b; cf12=trace b;af1=^wr; af2=^wd;af3=^wc; af4=^ww;af5=cls; af8=^xt r;af11=^dd dataaddr->0;af12=^dd dataaddr->4;cf1=altscr off; lines 60; wc 32; wd 8;cf2=^wr;^wd;^wc; 点评: 无 命令: flash 作用: 在 p 和 t 命令执行过程中刷新windows 屏幕 语法: flash [on | off] 用法: 如果将flash 置为 on ,则在执行t或p命令时,softice将刷新一下windows 屏幕,这在调试一个直接对显存操作的程序时特别有用.在一般情况下,当用 p 命令跨过一个call 时,而此 call 又调用显示驱动程序时,sof-tice才重新刷新屏幕. flash 命令不带参数将显示当前状态.默认flash off. 点评: 无 命令: format 作用: 改变数据窗口的显示格式 语法: format 用法: format 命令用来改变数据窗口的显示格式.softice有快捷键 shift-f3 来代替format.显示格式将按 字节,字,双字,短实型,长实型,10字节实型循环. 点评: 参见 d, data 命令. 命令: g 作用: 执行到某一地址 语法: g [=start-address] [break-address] 用法: =start-address: 开始地址break-address : 中断地址g 命令不带参数将从softice中返回.如果带参数break-address,则softice将在所指定的地址处下一个一次性断点; 如果带=start-address,softice 将从指定的地址处开始执行,否则从当前cs:eip处执行. 程序中其他的断点(非g命令下的断点)照样起作用. 无论是谁先弹出,都将清除g 命令所下的一次性断点.g 命令不带参数类似于 x 命令.g 命令在windows95中使用除错寄存器, 如果除错寄存器用完,则用int 3. 点评: 由于g 命令缺省用drx,所以有时可以对付一些在int 3上作手脚的程序. 命令: gdt 作用: 显示全局描述符表 语法: gdt [selector] 用法: selector: 指定gdt选择器gdt 命令将显示全局描述符表的内容.如果加选择符参数,则只显示此选择符所指的描述符.输出:gdt 的线性基址和长度将显示在输出数据的顶行输出数据的每一行内容的说明:value: 最低两位即描述符特权级type : 描述符类型,如下: code16 : 16位代码描述符 data16 : 16位数据描述符 code32 : 32位代码描述符 data32 : 32位数据描述符 ldt : 局部描述符表描述符 tss32 : 32位任务状态段描述符 tss16 : 16位任务状态段描述符 callg32: 32位调用门描述符 callg16: 16位调用门描述符 taskg32: 32位任务门描述符 taskg16: 16位任务门描述符 trapg32: 32位陷肼门描述符 trapg16: 16位陷肼门描述符 intg32 : 32位中断门描述符 intg16 : 16位中断门描述符 reserved: 保留的描述符base : 描述符中的段基址limit: 描述符中的段界限dpl : 描述符特权级,0,1,2,3present bit: p 或 np 表示该段是否在内存中segment attributes: 段特性: rw: 数据段可读写 ro: 数据段只读 re: 代码段可读可执行 eo: 代码段只可执行 b: tss(任务状态段)忙置位 ed: 数据扩展方式参见 ldt. 点评: 这段翻译并不完全用pdf手册上的.如"selector" 原指选择符(器),用来指向描述符表中的描述符, 而 pdf中type 的说明全用到 selector说的意思虽是一样,但和别的文献矛盾,故认为不妥,将其翻译成descriptor 即描述符.实际上可以看出,一个选择符指向一个描述符,两者是一致的.描述符类型实际上也就是指向它的选择符类型. 命令: genint 作用: 强行产生一个中断 语法: genint [nmi | int1 | int3 | interrupt-number] 用法: interrupt-number: 对windows95来说,0-5fhgenint强行产生一个中断,用于softice和别的debugger协作的时侯,如:genint nmi 将使softice将控制返还给codeview for dos.(对其他debugger,请尝试0,1,2,3)genint还用于测试中断例程.但softice不检测一个中断是否有效,它只是摹拟中断的产生,所以当用此命令时要注意相应的中断例程是否存在. 点评: 无