Linux 内核调试环境搭建

本文介绍了如何在Ubuntu20.04上通过QEMU模拟器和gdb调试工具来研究和学习Linux0.11内核,包括QEMU的功能、配置过程以及如何利用gdb进行调试操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

QEMU

Linux 0.11 源码

​编辑 gdb 调试

     

 学习Linux内核,我们可以看书,实际我们最好可以有一个可以调试的环境,本文就简单介绍一下使用Qemu 和gdb 来调试和查看Linux kernel 。在ubantu 20.04 的PC 上面编译内核源码,通过QEMU 来运行内核,然后使用gdb 来调试查看内核数据。

QEMU

QEMU 是一个开源的虚拟化技术软件,用于模拟硬件并执行多个操作系统和应用程序。QEMU 本身是一个纯软件的模拟器,但它通常与 Linux 内核的 KVM(Kernel-based Virtual Machine)模块结合使用,以实现高效的硬件辅助虚拟化。

QEMU 的主要特点包括:

  1. 平台独立性:QEMU 可以在多种平台上运行,包括 x86、ARM、MIPS 等。
  2. 可扩展性:QEMU 支持多种虚拟化标准,如 PCI Express、USB、SCSI、网络设备等。
  3. 高性能:结合 KVM,QEMU 可以实现接近原生硬件性能的虚拟化。
  4. 易用性:QEMU 提供了丰富的命令行选项和配置文件,方便用户进行虚拟机的配置和管理。

QEMU 通常用于以下几个方面:

  1. 开发和测试:QEMU 可以用于创建虚拟机,以便在不同的操作系统和硬件平台上开发和测试应用程序。
  2. 服务器虚拟化:QEMU 可以与 KVM 结合,实现高效的服务器虚拟化,提高硬件资源的利用率。
  3. 嵌入式系统开发:QEMU 支持多种嵌入式硬件平台,可用于模拟嵌入式设备,方便开发人员进行测试和调试。

我们的Linux kernel 版本是0.11 所以需要安装的QEMU 是 qemu-system-i386,ubantu 上面安装qemu 大家可以自己去搜索。

Linux 0.11 源码

Linux 0.11 源码的下载,我们可以使用网上其他人配置好的源码,因为老版本的代码是30年前的依赖一些特殊的设置和工具,直接使用配置好的比较方便,如果感兴趣也可以直接去下载官方老版本的code来手撕编译。

配置好的版本,可以用bochs ,qemu 等来调试。

GitHub - yuan-xy/Linux-0.11: The old Linux kernel source ver 0.11 which has been tested under modern Linux, Mac OSX and Windows.

 因为老版本的Linux kernel 是32位的,所以我们需要把makefile中QEMU 的设置修改一下

 把142行的qemu-system-x86_64 替换成qemu-system-i386

然后运行make debug 指令就可以启动QEMU  

 gdb 调试

gdb 的使用方法我这里就不做详细的介绍大家可以网上学习,在 tools 文件夹下面会生产符号文件

system

cmd 输入gdb system 

再输入 target remote :1234 和QMEU 建立连接。默认停止在0x0000fff0处,输入c 就会看到QEMU的界面有变化

加载了符号文件就可以使用代码中的名称来设置断点

 触发断点后的效果

查看gdt 表的内容

和源码中设置的值对比一下看看,

_gdt:	.quad 0x0000000000000000	/* NULL descriptor */
	.quad 0x00c09a0000000fff	/* 16Mb */
	.quad 0x00c0920000000fff	/* 16Mb */
	.quad 0x0000000000000000	/* TEMPORARY - don't use */
	.fill 252,8,0			/* space for LDT's and TSS's etc */

利用QEMU 和gdb 我们可以在看书学习的时候查看寄存器和内存中的值来加深对Linux kernel 的认识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值