欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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.”的解决方法

  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