qemu+vscode图形化调试linuxkernel
- 其他
- 2025-08-05 07:06:02

一、背景
使用命令行连接gdb 在调试时,虽然可以通过tui enable 显示源码,但还是存在设置断点麻烦(需要对着源码设置),terminal显示代码不方便,不利于我们学习;另外在gdb 下p命令显示结构体内容时,看起来也是很别扭,可以利用vscode+gdb-multiarch 调试qemu 仿真的arm64 linux 内核,这样查看源码,设置断点,查看变量信息也很快捷方便
二、依赖环境vscode extensions 搜索安装GDB Debug
增加gdb config
json 文件中增加(主要是设置 elf, 以及gdb 的路径,远程gdb连接的端口号)
{ // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "cppdbg", "request": "launch", "name": "kernel GDB", "program": "${workspaceFolder}/vmlinux", "cwd":"${workspaceFolder}", "MIMode":"gdb", "miDebuggerPath":"/usr/bin/gdb-multiarch", "miDebuggerServerAddress": "localhost:1234", "stopAtConnect": true, }, ] } 三、在vscode中启动调试如果不知道如何qemu 调试内核的可以参考我之前的文档
无人知晓:qemu搭建arm64 linux kernel调试环境
无人知晓:qemu单步调试arm64 linux kernel
这里有些差异,gdb 加载vmlinux, remote target设置的部分需要换成从vscode设置
第一步启动qemu并等待调试:
qemu-system-aarch64 \ -machine virt,virtualization=true,gic-version=3 \ -nographic \ -m size=1024M \ -cpu cortex-a72 \ -smp 2 \ -kernel Image \ -drive format=raw,file=rootfs.img \ -append "root=/dev/vda rw nokaslr" \ -s \ -S第二步vscode启动调试 Run->Start Debugging
第三步启动调试,在init/main.c中start_kernel设置断点,然后点击调试工具栏的continue即可触发到断点,可以开启单步调试了
第四步如果在执行过程中连接,也是点击pause按钮,这时内核会停止执行,然后在vscode中设置断点,continue后触发断点vscode能正确显示断点位置及代码
qemu+vscode图形化调试linuxkernel由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“qemu+vscode图形化调试linuxkernel”