61 | 搭建操作系统实验环境(下):授人以鱼不如授人以渔
刘超
该思维导图由 AI 生成,仅供参考
上一节我们做了一个实验,添加了一个系统调用,并且编译了内核。这一节,我们来尝试调试内核。这样,我们就可以一步一步来看,内核的代码逻辑执行到哪一步了,对应的变量值是什么。
了解 gdb
在 Linux 下面,调试程序使用一个叫作 gdb 的工具。通过这个工具,我们可以逐行运行程序。
例如,上一节我们写的 syscall.c 这个程序,我们就可以通过下面的命令编译。
其中,参数 -g 的意思就是在编译好的二进制程序中,加入 debug 所需的信息。
接下来,我们安装一下 gdb。
然后,我们就可以来调试这个程序了。
在上面的例子中,我们只要掌握简单的几个 gdb 的命令就可以了。
l,即 list,用于显示多行源代码。
b,即 break,用于设置断点。
r,即 run,用于开始运行程序。
n,即 next,用于执行下一条语句。如果该语句为函数调用,则不会进入函数内部执行。
p,即 print,用于打印内部变量值。
s,即 step,用于执行下一条语句。如果该语句为函数调用,则进入函数,执行其中的第一条语句。
c,即 continue,用于继续程序的运行,直到遇到下一个断点。
bt,即 backtrace,用于查看函数调用信息。
q,即 quit,用于退出 gdb 环境。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了在Linux环境下使用gdb工具进行内核调试的方法。通过添加系统调用并编译内核,读者可以逐步了解内核代码逻辑执行到哪一步以及对应的变量值。文章首先介绍了gdb工具的基本用法,包括设置断点、运行程序、逐行执行、打印变量值、查看函数调用信息等。通过示例演示了如何使用gdb调试程序,让读者能够快速上手。文章还介绍了在调试整个内核时的步骤,包括安装gdb、找到内核的二进制文件、修改qemu的启动参数、远程attach到qemu里面的内核等。通过实际操作,读者可以了解如何在虚拟机中进行内核调试,并通过gdb追踪系统调用的整个过程,从而深入了解内核的工作机制。总的来说,本文为读者提供了一份详实的内核调试指南,使他们能够更好地理解和掌握在Linux环境下使用gdb进行内核调试的方法和技巧。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《趣谈 Linux 操作系统》,新⼈⾸单¥68
《趣谈 Linux 操作系统》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(7)
- 最新
- 精选
- LDxy打断点的指令b后面是不是既可以跟行号也可以跟函数名?
作者回复: 是的
2019-08-172 - 魏颖琪终于在virtualbox中做完了这两课的实验。请问老师,云服务是否很少用 vbox,基本都用qemu?2019-09-206
- yanger缺省很多变量被编译优化了,有O0编译kernel的方法吗2020-02-0113
- 邹德虎如果没有虚拟机而是实体的服务器,怎么调试内核呢?2022-05-231
- 莫名编译、调试较新版本的内核稍微有些区别,大体流程基本相同。2020-09-24
- kkxue赞👍2019-08-16
- 许童童跟着老师一起精进。2019-08-16
收起评论