qemu + vscode 图形化调试 linux kernel
一、背景
使用命令行连接 gdb 在调试时,虽然可以通过 tui enable 显示源码,但还是存在设置断点麻烦(需要对着源码设置),terminal 显示代码不方便,不利于我们学习;另外在 gdb 下 p 命令显示结构体内容时,看起来也是很别扭,可以利用 vscode+gdb-multiarch 调试 qemu 仿真的 arm64 linux 内核,这样查看源码,设置断点,查看变量信息也很快捷方便
二、依赖环境
vscode extensions 搜索安装 GDB Debug

增加 gdb config

json 文件中增加(主要是设置 elf, 以及 gdb 的路径,远程 gdb 连接的端口号)
三、在 vscode 中启动调试
如果不知道如何 qemu 调试内核的可以参考我之前的文档
https://xie.infoq.cn/article/3415445f1c8831423a94c4bc2
https://xie.infoq.cn/article/6befd29e6d671f1527b3a03d6
这里有些差异,gdb 加载 vmlinux, remote target 设置的部分需要换成从 vscode 设置
第一步启动 qemu 并等待调试:
第二步 vscode 启动调试 Run->Start Debugging

第三步启动调试,在 init/main.c 中 start_kernel 设置断点,然后点击调试工具栏的 continue 即可触发到断点,可以开启单步调试了

第四步如果在执行过程中连接,也是点击 pause 按钮,这时内核会停止执行,然后在 vscode 中设置断点,continue 后触发断点 vscode 能正确显示断点位置及代码

版权声明: 本文为 InfoQ 作者【无人知晓】的原创文章。
原文链接:【http://xie.infoq.cn/article/1b5651ea20767557e94801b97】。文章转载请联系作者。
评论