之所以能用Bochs调试Linux内核,还是因为Bochs做了一些工作;

安装完成以后如下;如果使用bochs.exe加载操作系统映像,就是在虚拟机中运行操作系统;

如果使用bochsdbg.exe加载操作系统映像,就同时附带有调试命令,可进行调试;

如下图,.bxrc文件,是欲加载的操作系统映像的配置文件;我这个是Bochs 2.5自带的;

此目录下有run.bat;原内容如下;

cd "C:\Program Files (x86)\Bochs-2.5\dlxlinux"
..\bochs -q -f bochsrc.bxrc

修改为如下;

"C:\Program Files (x86)\Bochs-2.5\bochsdbg" -q -f bochsrc.bxrc

然后运行run.bat;出现下图;Display面板为空;命令行显示 <bochs:1>;到此停住,即可进行调试;

打 help 查看调试命令;

查看vbreak命令的帮助;此命令在某个虚拟地址设置断点;

设一个断点在0x7c00;

0x7C00的定义
BIOS就是将MBR读入0x7C00地址,然后进行后续的引导的。
操作系统或是bootloader开发者必须假设 他们的汇编代码被加载并从0x7C00处开始执行。
对于这个地址,它不属于Intel x86平台规范的,而是属于BIOS规范中定义的内容。

回车再输入c之后运行;

此时Display面板出现下图然后停住;

命令行显示中断在 0000:7c00;

但是我的输出和网上资料有所不同;我的输出显示在7c00处是一条汇编cli指令;根据资料到此应该显示类似如下内容;

<bochs:3> vbreak 0x0000:0x7c00
<bochs:4> c
(0) Breakpoint 1, 0x7c00 (0x0:0x7c00)
Next at t=4409138
(0) [0x00007c00] 0000:7c00 (unk. ctxt): mov ax, 0x7c0             ; b8c007
<bochs:5>

下回再搞;

然后可以打 u /10,反汇编从此地址开始的10条指令;

我的没有 info r 命令;

这个是查看寄存器;可以查看eflags寄存器;

可以打印当前堆栈;

可以打 n 逐条执行指令;

看上去可以进行调试了,目前还不了解bxrc文件里面的配置;

使用Bochs调试Linux内核初级入门相关推荐

  1. Bochs调试Linux内核初级入门2、bochs调试断点和单步指令、0x7c00、关中断和开中断指令

    前文见此: https://blog.csdn.net/bcbobo21cn/article/details/105314444 修改run.bat为:"C:\Program Files ( ...

  2. Bochs调试Linux内核6 - 启动过程调试 - 跳到bootsect引导程序执行

    接此,​​​​​​Bochs调试Linux内核5 - 启动过程调试 - 认识Bootsect.S_bcbobo21cn的专栏-CSDN博客 看一下,0x00007c11 这里是重复执行串传送:而后一条 ...

  3. Bochs调试Linux内核5 - 启动过程调试 - 认识Bootsect.S

    先参阅 Bochs调试Linux内核 - 定位内核中的变量或数据结构_bcbobo21cn的专栏-CSDN博客​​​​​​ ,运行到<bochs:1>,输入vbreak 0x0000:0x ...

  4. Bochs调试Linux内核

    总结:cmd进入Bochs安装路径后运行如下命令bochsdbg  -q -f bochsrc.bxrc 调试的命令主要包括: vbreak  地址 打断点,配合c执行到该地址 info r      ...

  5. bochs调试linux内核学习4 - bochs配置文件的$BXSHARE变量、bochs的System BIOS must end at 0xfffff错误、运行内核0.00版本

    经过前面的一些操作,目前只能用bochs调试linux 0.11内核的启动部分:下面来继续学习相关内容: 根据资料,在内核0.11之前,还有更小的内核0.00版本需要认识:在此下载: http://o ...

  6. Bochs调试Linux内核 - 定位内核中的变量或数据结构

    到此网址下载, http://oldlinux.org/Linux.old/bochs/linux-0.12-080324.zip 解压以后如下: 第一个文件是Bochs安装文件:安装之:安装之后如下 ...

  7. Bochs调试Linux内核初步学习 - 3

    接此: https://blog.csdn.net/bcbobo21cn/article/details/120480214 前面尝试了在线性地址下断点,都是失败:下面再研究一下: 首先看一下0.11 ...

  8. 使用 ftrace 调试 Linux 内核【转】

    转自:http://blog.csdn.net/adaptiver/article/details/7930646 使用 ftrace 调试 Linux 内核,第 1 部分 http://blog.c ...

  9. 使用openocd调试Linux内核,OpenOCD-JTAG调试

    title: OpenOCD-JTAG调试 tags: ARM date: 2018-10-13 23:36:28 Todo [ ] JTAG 调试linux内核 [ ] linux下使用OpenOC ...

最新文章

  1. 数据中心液体冷却技术的“机架经济学”
  2. 热乎着,昨晚阿里这题真太绝了
  3. 进程调度算法 C++实现
  4. SVG 教程 (四)多边形,曲线,路径
  5. netif_receive_skb 函数解析
  6. 俞昆20155335《网络对抗》MSF基础应用
  7. 数据结构最短路径例题_数据结构(五)图---最短路径(迪杰斯特拉算法)
  8. 史上最全的微信小程序代码大全分享
  9. 生产订单管理系统软件哪家好?
  10. 计算机系统应用属于ei,2018年度中心成员发表论文清单(SCI、EI收录)
  11. 「查漏补缺」2020 截止9月2日 秋招前端面试经历 (已整理答案)
  12. 南京师范大学计算机考研2021,南京师范大学2021考研分数线已公布
  13. MySQLyog的使用
  14. YII2.0电商平台开发笔记
  15. mysql 联合索引 abc_ABC联合索引生效问题(整理笔记!!!)
  16. 微擎 人人商城 对接京东vop 对接京东商品,同步商品 地址,库存,价格,上下架等。七 (上)之异常订单 后台功能完善...
  17. 5G通信系统的Salen-Valenzula信道分析
  18. linux浏览器网页唤起electron应用
  19. 【经验科普】实战分析C工程代码可能遇到的编译问题及其解决思路
  20. 分布式事务之BASE理论

热门文章

  1. c3p0 参数 模糊查询_mybatis之动态sql,模糊查询,结果集处理,mybatis分页及特殊字符处理...
  2. pip安装ipython_Python -- 关于pip安装Ipython
  3. 进阶指令——df指令(作用:查看磁盘的空间)、free指令(作用:查看内存使用情况)、head指令(作用:查看一个文件的前n行,如果不指定n,则默认显示前10行)、tail指令、less指令
  4. 正则中需要转义的特殊字符小结
  5. Python 利用pickle库查看pkl文件实例演示,pkl是什么类型的文件?怎么来打开它?
  6. 微信小程序云开发 | 云函数安装依赖
  7. 浏览器中遮罩层镂空效果的多种实现方法
  8. C++中的函数指针和函数对象总结
  9. mysql connector安装教程_通过安装MySQL Connector/Net实现VS2017 C#编程连接MySQL数据库-网络教程与技术 -亦是美网络...
  10. 2.3.1 为超参数选择合适的范围