gdb+menuos调试linux内核
程序员文章站
2022-07-14 12:34:54
...
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.”的解决方法
- 首先要确定ncurses库是否已经正确安装。在debian, Ubuntu上,可以用dpkg -l | grep ncurses 查看ncurses库是否已安装。
- 如果ncurses已经安装了,需要查看TERM, TERMINFO两个环境变量是否已经设置正确。如果没有设置正确,需要设置为正确的值。
参考:
https://blog.csdn.net/marshalsoul/article/details/51097372
https://blog.csdn.net/zmnbehappy/article/details/87562806
下一篇: 队列的实现(具体接口实现)