gdb+menuos调试linux内核

本文详细介绍如何通过GDB和QEMU系统进行Linux内核的调试。首先,需重新配置并编译Linux内核以包含调试信息。接着,利用QEMU启动带有调试信息的内核,并通过GDB进行远程调试。文章还提供了遇到常见错误时的解决方案。

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

gdb+menuos调试linux内核

继续上篇文章之后,本篇解答如何调试内核?

重新配置编译Linux使之携带调试信息

在原来配置的基础上,make menuconfig选中如下选项重新配置Linux,使之携带调试信息

kernel hacking—>
[*] compile the kernel with debug info
make重新编译(时间较长)

使用gdb跟踪调试内核

qemu-system-i386 -kernel arch/x86/boot/bzImage -initrd …/rootfs.img -append “console=ttyS0” -nographic -s -S

关于-s和-S选项的说明:

-S freeze CPU at startup (use ’c’ to start execution)
-s shorthand for -gdb tcp::1234 若不想使用1234端口,则可以使用-gdb tcp:xxxx来取代-s选项

另开一个shell窗口

gdb
(gdb)file linux-3.18.6/vmlinux # 在gdb界面中targe remote之前加载符号表
(gdb)target remote:1234 # 建立gdb和gdbserver之间的连接,按c 让qemu上的Linux继续运行
(gdb)break start_kernel # 断点的设置可以在target remote之前,也可以在之后

QA:
make menuconfig时提示“Error opening terminal: xterm.”的解决方法

  1. 首先要确定ncurses库是否已经正确安装。在debian, Ubuntu上,可以用dpkg -l | grep ncurses 查看ncurses库是否已安装。
  2. 如果ncurses已经安装了,需要查看TERM, TERMINFO两个环境变量是否已经设置正确。如果没有设置正确,需要设置为正确的值。

参考:
https://blog.youkuaiyun.com/marshalsoul/article/details/51097372
https://blog.youkuaiyun.com/zmnbehappy/article/details/87562806

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值