gdb+menuos调试linux内核

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.csdn.net/marshalsoul/article/details/51097372
https://blog.csdn.net/zmnbehappy/article/details/87562806

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值