bochs下的debug命令-中文版

上传人:壹****1 文档编号:498698983 上传时间:2022-07-20 格式:DOC 页数:7 大小:22.50KB
返回 下载 相关 举报
bochs下的debug命令-中文版_第1页
第1页 / 共7页
bochs下的debug命令-中文版_第2页
第2页 / 共7页
bochs下的debug命令-中文版_第3页
第3页 / 共7页
bochs下的debug命令-中文版_第4页
第4页 / 共7页
bochs下的debug命令-中文版_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《bochs下的debug命令-中文版》由会员分享,可在线阅读,更多相关《bochs下的debug命令-中文版(7页珍藏版)》请在金锄头文库上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! Bochs是一个基于LGPL的开源x86 虚拟机软件。Bochs的CPU指令是完全自己模拟出来的,这种方式的缺点是速度比较慢;优点是具有无以伦比的可移植性:有Gcc的地方就可以有 Bochs。甚至已经有了跑在PocketPC上的Bochs。 现在的Bochs 已经实现了一定程度的调试功能,虽然在易用性和功能上还无法和WinDbg、SoftICE相比,但优势也是很明显的:对跑在Bochs里面的代码来说,这就是“硬件调试器”。 对Windows 版本的Bochs来说,安装目录下的bochsdbg.exe就是Bochs的调试版本。用它来运行Bochs虚

2、拟机就可以进行“硬件调试”。 Bochs的调试命令风格是按照GDB习惯来设计的,这对于用惯了WinDbg的人来说无疑是痛苦的,好在这是个开源软件,看着不顺眼可以考虑自己改改。 目前版本的Bochs(Version 2.1.1)支持的调试命令如下: 注意 1、Bochs的文档和帮助信息中的使用说明与真实情况之间存在很大的差错和缺失,下面的命令说明根据源码作了很多补充和修正。 2、其中涉及到的seg(段)、off(偏移)、addr(地址)、val(值)等数字,可以使用十六进制、十进制或者八进制,但必须按照如下形式书写: 十六进制 0xCDEF0123八进制 01234567十进制 12345678

3、9尤其要注意,Bochs不能自动识别16进制的数字,也不接受12345678h这种写法。 执行控制 c|cont 向下执行,相当于WinDBG的“g”。 s|step|stepi count 单步执行,相当于WinDBG的“t”,count 默认为 1。 p|n|next 单步执行,类似于WinDBG的“p”。 q|quit|exit 退出调试,同时关闭虚拟机。 Ctrl-C 结束执行状态,返回调试器提示符。 Ctrl-D if at empty line on command line, exit(至少在Windows版本中我没有发现Ctrl-D有什么功能) 执行断点 vb|vbreak s

4、eg:off 在虚拟地址上下断点。 lb|lbreak addr 在线性地址上下断点,相当于WinDBG的“bp”。 pb|pbreak|b|break addr 在物理地址上下断点。(为了兼容GDB的语法,地址前可以加上一个“*”)。 blist 显示断点状态,相当于WinDBG的“bl”。 bpd|bpe num 禁用/启用断点,WinDBG的“be”和“bd”。num是断点号,可以用blist命令查询。 d|del|delete num 删除断点,相当于WinDBG的“bc”。mum是断点号,可以用blist命令查询。 读写断点 watch read addr 设置读断点。watch w

5、rite addr 设置写断点。unwatch read addr 清除读断点。unwatch write addr 清除写断点。watch 显示当前所有读写断点。unwatch 清除当前所有读写断点。watch stop|continue 开关选项,设置遇到读写断点时中断下来还是显示出来但是继续运行。 内存操作 x /nuf addr 显示线性地址的内容xp /nuf addr 显示物理地址的内容n 显示的单元数u 每个显示单元的大小,u可以是下列之一:b BYTEh WORDw DWORDg DWORD64注意: 这种命名法是按照GDB习惯的,而并不是按照inter的规范。 f 显示格式,

6、f可以是下列之一:x 按照十六进制显示d 十进制显示u 按照无符号十进制显示o 按照八进制显示t 按照二进制显示c 按照字符显示n、 f、u是可选参数,如果不指定,则u默认是w,f默认是x。如果前面使用过x或者xp命令,会按照上一次的x或者xp命令所使用的值。n默认为1。 addr 也是一个可选参数,如果不指定,addr是0,如过前面使用过x或者xp命令,指定了n=i,则再次执行时n默认为i+1。 setpmem addr size val 设置物理内存某地址的内容。 需要注意的是,每次最多只能设置一个DWORD:这样是可以的:setpmem 0x00000000 0x4 0x11223344

7、x /4 0x00000000bochs:0x00000000 : 0x11223344 0x00000000 0x00000000 0x00000000这样也可以:setpmem 0x00000000 0x2 0x11223344x /4 0x00000000bochs:0x00000000 : 0x00003344 0x00000000 0x00000000 0x00000000或者:setpmem 0x00000000 0x1 0x20x /4 0x00000000bochs:0x00000000 : 0x00000020 0x00000000 0x00000000 0x00000000

8、下面的做法都会导致出错:setpmem 0x00000000 0x3 0x112233Error: setpmem: bad length value = 3setpmem 0x00000000 0x8 0x11223344Error: setpmem: bad length value = 8 crc start end 显示物理地址start到end之间数据的CRC。 寄存器操作 set $reg = val 设置寄存器的值。现在版本可以设置的寄存器包括:eax ecx edx ebx esp ebp esi edi暂时不能设置:eflags cs ss ds es fs gs r|reg

9、|registers reg = val 同上。 dump_cpu 显示完整的CPU信息。 set_cpu 设置CPU状态,这里可以设置dump_cpu所能显示出来所有CPU状态。 反汇编命令 u|disas|disassemble /num start end反汇编物理地址start到end 之间的代码,如果不指定参数则反汇编当前EIP指向的代码。num是可选参数,指定处理的代码量。set $disassemble_size = 0|16|32 $disassemble_size变量指定反汇编使用的段大小。 set $auto_disassemble = 0|1 $auto_disassem

10、ble决定每次执行中断下来的时候(例如遇到断点、Ctrl-C等)是否反汇编当前指令。 其他命令trace-on|trace-off Tracing开关打开后,每执行一条指令都会将反汇编的结果显示出来。 ptime 显示Bochs自本次运行以来执行的指令条数。 sb val 再执行val条指令就中断。val是64-bit整数,以L结尾,形如“1000L” sba val 执行到Bochs自本次运行以来的第val条指令就中断。val是64-bit整数,以L结尾,形如“1000L” modebp 设置切换到v86模式时中断。 record filename 将输入的调试指令记录到文件中。文件名必须包

11、含引号。 playback filename 回放record的记录文件。文件名必须包含引号。 print-stack num 显示堆栈,num默认为16,表示打印的条数。 ?|calc 和WinDBG的“?”命令类似,计算表达式的值。 load-symbols global filename offset载入符号文件。如果设定了“global”关键字,则符号针对所有上下文都有效。offset会默认加到所有的symbol地址上。symbol文件的格式为:%x %s。 info命令 info program 显示程序执行的情况。info registers|reg|r 显示寄存器的信息。info pb|pbreak|b|break 相当于blistinfo dirty 显示脏页的页地址。info cpu 显示所有CPU寄存器的值。info fpu 显示所有FPU寄存器的值。info idt 显示IDT。info gdt num 显示GDT。info ldt 显示LDT。info tss 显示TSS。info pic 显示PIC。info ivt num num 显示IVT。info flags 显示状态寄存器。info cr 显示CR系列寄存器。info symbols 显示symbol信息。info ne2k|ne2000 显示虚拟的ne2k网卡信息 /

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 国内外标准规范

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号