《一个操作系统的实现》(二):使用Bochs调试操作系统
来源:互联网 发布:文件上传js代码 编辑:程序博客网 时间:2024/06/06 13:36
在输入bochs -f bochsrc后,还有几个选项,只需要输入6然后回车或直接按回车即可启动操作系统,不过它仍然停在那里而不是立刻执行。这时会出现<bochs:1>,等待我们操作。
首先按照书上给的例子模拟一遍过程。
<bochs:1> b 0x7c00 (在程序入口处设置断点)
<bochs:2>c(执行到断点位置,这时虽然Bochs上有内容,但是"Hello, OS world!"还未显示)
<bochs:3>dump_cup(不知道早些的版本是否能执行这个,反正我的Bochs2.6.1中这个命令已经不能用了,会提示:3: syntax error at 'dump_cpu',用info cpu、r、fp、sreg、creg命令来代替。而且我在使用info cpu命令时,会提示The CPU doesn't support AVX state !,从Bochs源码中可以看到如果BX_SUPPORT_AVX值为假,会打印此条语句。相关内容可参考此文章)
<bochs:4>x /64xb 0x7c00 (查看线性地址内容)
<bochs:5>n(单步执行)
<bochs:6>trace-reg on(开启“每执行一条指令就打印CPU信息”选项)
<bochs:7>n(继续单步执行)
<bochs:8>c(继续执行,会发现"Hello, OS world!"显示出来了)
输入help或h,然后回车,Bochs会打印如下内容:
h|help - show list of debugger commands
h|help command - show short command description
-*- Debugger control -*-
help, q|quit|exit, set, instrument, show, trace, trace-reg,
trace-mem, u|disasm, ldsym, slist
-*- Execution control -*-
c|cont|continue, s|step, p|n|next, modebp, vmexitbp
-*- Breakpoint management -*-
vb|vbreak, lb|lbreak, pb|pbreak|b|break, sb, sba, blist,
bpe, bpd, d|del|delete, watch, unwatch
-*- CPU and memory contents -*-
x, xp, setpmem, writemem, crc, info,
r|reg|regs|registers, fp|fpu, mmx, sse, sreg, dreg, creg,
page, set, ptime, print-stack, ?|calc
-*- Working with bochs param tree -*-
show "param", restore
网上有许多讲bochs调试命令的文章,我把书上的内容以及解释列在下面:
r
fp
sreg
creginfo cpu
r
fp
sreg
creg查看堆栈print-stackprint-stack查看内存物理地址内容xp /nuf addrxp /40bx 0x9013e查看线性地址内容x /nuf addrx /40bx 0x13e反汇编一段内存u start endu 0x30400 0x3040D反汇编执行的每一条指令trace-ontrace-on每执行一条指令就打印CPU信息trace-regtrace-reg on在查看寄存器信息中,r为通用寄存器,fp应该就是fp寄存器吧,sreg为段寄存器,creg为控制寄存器。
在xp和x命令中,nuf表示指定打印多少信息。
其实bochs调试跟gdb挺像的~
前两章到此结束,第三章内容好像不少的样子。。去看第三章了~
- 《一个操作系统的实现》(二):使用Bochs调试操作系统
- 使用bochs调试操作系统
- 使用 Bochs 调试操作系统
- 调试操作系统-bochs使用入门
- 《一个操作系统的实现》阅读笔记 之 开发『调试』环境bochs的搭建
- bochs调试操作系统
- Orange's 一个操作系统的实现--Bochs遇到的问题
- 关于一个操作系统实现中bochs的安装
- Orange's一个操作系统的实现 安装Bochs
- 【从头开始写操作系统系列】使用 Bochs 调试操作系统
- bochs 2.4.2 ubuntu 安装运行问题《orange's 一个操作系统的实现》第二章 调试篇
- 《Orange'S:一个操作系统的实现》学习笔记(三)--bochs
- 基于 Bochs 的操作系统内核实现
- 基于 Bochs 的操作系统内核实现
- 调试操作系统专用虚拟机--Bochs
- bochs调试操作系统,以及可引导img的制作
- 写操作系统----1.bochs调试的环境搭建
- 高版本bochs-2.6.7的bochsrc的改写 一个操作系统的实现
- SetRegistryKey的作用
- Vim 设置相关 快捷操作
- 黑马程序员---Map集合
- 用键盘在网页上选择复选框
- hdu 2525(模拟)
- 《一个操作系统的实现》(二):使用Bochs调试操作系统
- RAC 详解
- Eclipse @override报错
- 控制台程序输入CTRL+C后弹出异常的原因
- 2.View学习(Backbone Tutorials)
- 电阻和磁珠的区别
- 心痛
- ThinkPad T410i 安装 Mac10.8.3 记录
- RMAN Nocatalog 与Catalog 区别