到此网址下载,

http://oldlinux.org/Linux.old/bochs/linux-0.12-080324.zip

解压以后如下;

第一个文件是Bochs安装文件;安装之;安装之后如下图;同时在下图目录新建0.11目录;

把下载的如下内容拷贝过来; .bxrc, 这是bochs配置文件;

bochs配置文件包含如下两行,

floppya: 1_44="bootimage-0.12-hd", status=inserted
    floppyb: 1_44="diskb.img", status=inserted

这是指定软驱A插入载有0.12版本的内核镜像的软盘; diskb.img,这里面可能是一些工具;

然后在此目录建立一个run.bat;内容如下图;

安装目录根据自己的更改;运行此bat;如果写错 bochsrc-0.12-hd.bxrc ,则可能出现类似下图错误;

运行以后,正常就进到 <bochs:1> 停止;0.12版本内核已装载;可以输入调试命令;

先在7c00设一个断点,然后下一行再输入 c ,执行到断点;

执行到断点如下图;这里是一条 mov ax, 0x07c0 指令;根据资料,这条指令是一些操作系统开始引导的起点;

参照,https://blog.csdn.net/bcbobo21cn/article/details/105314444
然后看一下;此目录下还有SYSTEM.MAP文件;里面是内核的函数和变量的地址;这是编译内核时产生的;是别人做的,我不会做;

利用此文件可以在调试时快速定位到感兴趣的变量或函数;

假设要定位到buffer_init函数,地址0xf488;

输入lb 0xf488;在此地址设一个断点;lb = lbreak;    l,应该是line的意思;线性地址;

然后输入 c 继续执行;但是就挂了;如下图;前头相关的内容还没看,可能还有些配置没弄完;

再试另外的地址也是挂掉;

主要参考的 Linux内核完全剖析 - 基于0.12内核 一书;还有,

bochs调试linux 0.11内核_envy2008的专栏-CSDN博客

Bochs调试Linux内核 - 定位内核中的变量或数据结构相关推荐

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

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

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

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

  3. 使用Bochs调试Linux内核初级入门

    之所以能用Bochs调试Linux内核,还是因为Bochs做了一些工作: 安装完成以后如下:如果使用bochs.exe加载操作系统映像,就是在虚拟机中运行操作系统: 如果使用bochsdbg.exe加 ...

  4. Bochs调试Linux内核

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

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

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

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

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

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

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

  8. Linux内核ARM构架中原子变量的底层实现研究

    前段时间重新研究了一下Linux的并发控制机制,对于内核的自旋锁.互斥锁.信号量等机制及其变体做了底层代码上的研究.因为只有从原理上理解了这些机制,在编写驱动的时候才会记得应该注意什么.这些机制基本都 ...

  9. Eclipse CDT+Qemu调试Linux 0.11内核

    操作系统:CentOS 6.3 for 32bit 需要软件:eclipse-cpp-galileo-SR2-linux-gtk.tar.gz qemu 需要内核文件:linux 0.11(Makef ...

最新文章

  1. iOS开发关于block学习的总结
  2. [ZJOI2007]棋盘制作 报表统计 矩阵游戏 时态同步
  3. NameValueCollection类总结和一个例子源码
  4. 用模版实现简单的内存池
  5. POJ-1651 Multiplication Puzzle 矩阵连乘问题(区间dp)
  6. webapi 路由限制命名控件_解决Web API路由配置支持Area及命名空间参数
  7. 一秒点击手机屏幕次数_抓住夏天的尾巴|与自动点击评论器邂逅一次
  8. linux,想说爱你真的很不容易!
  9. Moto X的谷歌基因
  10. vigenere加密与解密算法
  11. 课程设计-工资管理系统
  12. J-Link驱动安装
  13. refresh( )
  14. 什么是CSS hack及写法
  15. 微软认知服务应用秘籍 – 君子动口不动手
  16. gdc服务器ssl证书不一致,如何解决SSL证书不匹配错误
  17. leetcode题解(含解题思路)(持续更新中)
  18. 计算机无法连接到手机热点,电脑搜不到手机的热点是为什么_电脑无法发现手机热点的处理方法...
  19. ResetTemplate封装
  20. J2ME资源:各厂商SDK和模拟器下载地址

热门文章

  1. Leetcode 138. 复制带随机指针的链表 解题思路及C++实现
  2. 计算机软件技术基础考前整理
  3. HDU 1232畅通工程
  4. python生成gif【简明教程】
  5. 【解决方案】requests.exceptions.SSLError: HTTPSConnectionPool
  6. DIP第二章习题解答
  7. java中什么表示菜单项_下列类型中,表示菜单项的是( )。_学小易找答案
  8. sql和泛型方法返回泛型_基于泛型编程的序列化实现方法
  9. HZOJ 赤(CF739E Gosha is hunting)
  10. MySQL之SQL优化详解(二)