Bochs调试Linux内核 - 定位内核中的变量或数据结构
到此网址下载,
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内核 - 定位内核中的变量或数据结构相关推荐
- bochs调试linux内核学习4 - bochs配置文件的$BXSHARE变量、bochs的System BIOS must end at 0xfffff错误、运行内核0.00版本
经过前面的一些操作,目前只能用bochs调试linux 0.11内核的启动部分:下面来继续学习相关内容: 根据资料,在内核0.11之前,还有更小的内核0.00版本需要认识:在此下载: http://o ...
- Bochs调试Linux内核5 - 启动过程调试 - 认识Bootsect.S
先参阅 Bochs调试Linux内核 - 定位内核中的变量或数据结构_bcbobo21cn的专栏-CSDN博客 ,运行到<bochs:1>,输入vbreak 0x0000:0x ...
- 使用Bochs调试Linux内核初级入门
之所以能用Bochs调试Linux内核,还是因为Bochs做了一些工作: 安装完成以后如下:如果使用bochs.exe加载操作系统映像,就是在虚拟机中运行操作系统: 如果使用bochsdbg.exe加 ...
- Bochs调试Linux内核
总结:cmd进入Bochs安装路径后运行如下命令bochsdbg -q -f bochsrc.bxrc 调试的命令主要包括: vbreak 地址 打断点,配合c执行到该地址 info r ...
- Bochs调试Linux内核6 - 启动过程调试 - 跳到bootsect引导程序执行
接此,Bochs调试Linux内核5 - 启动过程调试 - 认识Bootsect.S_bcbobo21cn的专栏-CSDN博客 看一下,0x00007c11 这里是重复执行串传送:而后一条 ...
- Bochs调试Linux内核初步学习 - 3
接此: https://blog.csdn.net/bcbobo21cn/article/details/120480214 前面尝试了在线性地址下断点,都是失败:下面再研究一下: 首先看一下0.11 ...
- Bochs调试Linux内核初级入门2、bochs调试断点和单步指令、0x7c00、关中断和开中断指令
前文见此: https://blog.csdn.net/bcbobo21cn/article/details/105314444 修改run.bat为:"C:\Program Files ( ...
- Linux内核ARM构架中原子变量的底层实现研究
前段时间重新研究了一下Linux的并发控制机制,对于内核的自旋锁.互斥锁.信号量等机制及其变体做了底层代码上的研究.因为只有从原理上理解了这些机制,在编写驱动的时候才会记得应该注意什么.这些机制基本都 ...
- Eclipse CDT+Qemu调试Linux 0.11内核
操作系统:CentOS 6.3 for 32bit 需要软件:eclipse-cpp-galileo-SR2-linux-gtk.tar.gz qemu 需要内核文件:linux 0.11(Makef ...
最新文章
- iOS开发关于block学习的总结
- [ZJOI2007]棋盘制作 报表统计 矩阵游戏 时态同步
- NameValueCollection类总结和一个例子源码
- 用模版实现简单的内存池
- POJ-1651 Multiplication Puzzle 矩阵连乘问题(区间dp)
- webapi 路由限制命名控件_解决Web API路由配置支持Area及命名空间参数
- 一秒点击手机屏幕次数_抓住夏天的尾巴|与自动点击评论器邂逅一次
- linux,想说爱你真的很不容易!
- Moto X的谷歌基因
- vigenere加密与解密算法
- 课程设计-工资管理系统
- J-Link驱动安装
- refresh( )
- 什么是CSS hack及写法
- 微软认知服务应用秘籍 – 君子动口不动手
- gdc服务器ssl证书不一致,如何解决SSL证书不匹配错误
- leetcode题解(含解题思路)(持续更新中)
- 计算机无法连接到手机热点,电脑搜不到手机的热点是为什么_电脑无法发现手机热点的处理方法...
- ResetTemplate封装
- J2ME资源:各厂商SDK和模拟器下载地址
热门文章
- Leetcode 138. 复制带随机指针的链表 解题思路及C++实现
- 计算机软件技术基础考前整理
- HDU 1232畅通工程
- python生成gif【简明教程】
- 【解决方案】requests.exceptions.SSLError: HTTPSConnectionPool
- DIP第二章习题解答
- java中什么表示菜单项_下列类型中,表示菜单项的是( )。_学小易找答案
- sql和泛型方法返回泛型_基于泛型编程的序列化实现方法
- HZOJ 赤(CF739E Gosha is hunting)
- MySQL之SQL优化详解(二)