加入收藏 设为首页 联系站长
首页 | 虚拟动态 | Cisco模拟 | Juniper仿真 | 虚拟机 | 网络仿真 | 软件路由 | 技术专题 | 相关软件 | 交流论坛
>首页 -> 虚拟机 -> Bochs

TOP

使用bochs调试系统内核
[ 录入者:admin | 时间:2007-10-28 15:03:16 | 作者: | 来源: | 浏览:964次 ]

1,如何运行bochs调试程序

    假设bachs系统安装在目录“C:\Program Files\Bochs=2.1.1\"中,并且linux系统的Bochs的配置文件名称为:bochsrc-hd.bxrc。现在我们在Image文件的目录下建立一个简单的批处理程序:

     “C:\Program Files\Bochs-2.1.1\bochsdbg" -g -f bochsrc-hd.bxrc”

    运行该批处理命令集可进入调试环境,此时bachs主窗口空白,但是调试窗口将显示系统信息

========================================================================================

                                         Bochs x86 Emulator 2.1.1 February 08,2004

========================================================================================

00000000000i[      ] reading configuration from bochsrc-hd.bxrc

00000000000i[      ] installing win32 module as the bochs GUI

00000000000i[      ] Warning : no rc file specified

00000000000i[      ] using log file bochsout.txt

Next at t=0

(0)context not implemented because BX_HAVE_HASH_MAP=0

[0x000ffff0] f000:fff0(unk . ctxt): jmp f000:e05b               ;ea5be000f0

<bochs:1>:

-------------------------------------------------------------------------------------------------------------------------------

  此时,bochs系统已经准备好开始运行,CPU执行指针指向ROM BIOS中地址0x000ffff0处的指令。

  可以在命令提示符后,输入help用以列出调试系统的基本命令

  完整的调试指令帮助文档在internal-debugger.html中

 

2,执行控制命令,控制程序的单步或多步执行

————————————————————————————————————————————

        c                              连续执行

        stepi[count]             执行count条指令,默认为一条,可略写为:si[count] ; step[count]

        Ctrl-C                      停止执行,并回到命令提示符下

        Ctrl-D                       如果在空的命令提示符下键入该命令,则退出bochs

         quit                          退出调试和执行 可略写为:q

————————————————————————————————————————————

3,断点设置命令。其中seg, off, addr可以是"oX"开头的十六进制数,也可以是十进制数,或者以"0"开头的八进制数

————————————————————————————————————————————

          vbreak seg:off                    在虚拟地址上设置断点,简写成vb seg:off

          lbreak addr                      在线性地址上设置断点,简写成lb  addr

          pbreak [ * ] addr                   在物理地址上设置断点,简写成pb [*] addr 

          info break                             显示所有断点当前信息

          delete n                                删除一个断点

————————————————————————————————————————————

4,内存操作命令

————————————————————————————————————————————

            x  /nuf   addr                        检查位于线性地址addr处的内存内容,若addr不指定,为下单元

            xp /nuf  addr                        检查位于物理地址addr处的内存内容

————————————————————————————————————————————

5,信息显示和cpu寄存器操作命令

————————————————————————————————————————————

           info program                         显示程序的执行状态

           info registers                         列表显示cpu整数寄存器及其内容

           info break                             先是当前断点设置情况

           dump_cpu                             显示cpu全部状态信息

————————————————————————————————————————————

应用举例:

    比如,在引导linux系统下,要让bochs直接模拟执行到linu的引导启动程序开始处,我们可以先试用断点命令在ox7c00处设置一个断点,然后让系统运行到哪里停下来:

————————————————————————————————————————————

<bochs-3> vbreak 0x0000:0x7c00

<bochs-4>c

(0) breakpoint 1, 0x7c00(0x0:0x7c00)

next at t=4409138

————————————————————————————————————————————

           set_cpu                                 设置cpu全部状态信息

[上一篇]自己动手写操作系统--"Hello, OS .. [下一篇]Bochs基础介绍
※相关文章
 

评论

称  呼:
内  容:

相关栏目

最新文章

热门文章

推荐文章

赞助商链接