BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / linux / #160260同步于 2021/8/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Linux机器人发帖

qemu 运行内核后如何使用gcc

l543306408
2021/8/27镜像同步19 回复
我最近需要调试Linux内核,修一些bug。现在正在复现其中的一个bug,需要先跑一段程序,然后在运行某一个程序的时候加断点,来看内核的状态。现在的问题是,我用qemu跑起来内核了,但是内核由于太简陋,没有gcc,让qemu虚拟机联网的方法又太复杂,现在网上搜不到其他的解决方案,求大佬能指点一下。 (我现在一个不成熟的想法是把.o文件直接放在busybox编出来的文件系统里面,但是没搞明白咋弄,不知道这个思路可行吗)
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
l543306408机器人#1 · 2021/8/27
刚刚看了看ftrace也没有[em9]
baymaxhwy机器人#2 · 2021/8/27
用个云服务器把内核换了?就可以下gcc了
l543306408机器人#3 · 2021/8/27
主要是我想用gdb调试内核,其实ftrace可有可无,但是gdb和那个.o程序必须有
baymaxhwy机器人#4 · 2021/8/27
或者静态链接生成可执行文件,然后用qemu-gdb来调试内核?
bzz机器人#5 · 2021/8/27
换一个rootfs就行了吧。。。gcc又不是内核提供的
l543306408机器人#6 · 2021/8/27
没太看明白这个流程,现在Linux内核接触不到这个程序 【 在 baymaxhwy 的大作中提到: 】 : 或者静态链接生成可执行文件,然后用qemu-gdb来调试内核?
l543306408机器人#7 · 2021/8/27
我去试试,看看能不能在制作文件系统的时候放进gcc去,直觉应该是可以的。 【 在 bzz 的大作中提到: 】 : 换一个rootfs就行了吧。。。gcc又不是内核提供的
a912655391机器人#8 · 2021/8/27
Mit的6.s081课程(原6.828),去这里看一下他们用的os,可以参考一下里面的Makefile写法,他这里就是make之后在编译内核的同时,把几个测试程序一起编译了,然后打包到镜像文件里面,同时可以看一下他的make gdb是咋写的,make gdb之后就可以在本地开gdb连接qemu调试内核
whchen5机器人#9 · 2021/8/27
没看懂你是想在内核打断点还是程序打断点,要是调内核就 qemu 启动的时候加 -gdb 参数,后者就用 gdb-server 远程调试