背景
本人通过windows主机连接vmware中的ubuntu虚拟机,使用qemu调试xv6内核。传统使用命令行来进行gdb调试有时确实不如gui方便。也尝试过一些gui方案,但都没成功,在扩展里面搜索qemu gdb的时候,突然找到了一个插件,配置后居然真的成功了。

插件仓库为https://github.com/saliccio/qemu-gdb-debug
步骤
1. 安装插件
先安装c/c++ 插件,然后再安装QEMU-GDB-Debugging插件。
2. 配置文件
在本项目的.vscode/settings.json(没有就创建)文件中添加如下信息,具体内容请根据自己的任务进行修改。
例如我之前通过命令行进行gdb调试的时候的相关命令行为
- gdb 调试
使用的gdb为gdb-multiarch
qemu-system-riscv64 -machine virt -bios default -kernel kernel/kernel -smp 3 -m 128M -nographic -global virtio-mmio.force-legacy=false -S -gdb tcp::26000
那么对应的settings.json如下:
- settings.json
{
// =======================================================
// QEMU-GDB Debugging 插件配置项
// = =======================================================
// 1. QEMU 启动命令
// 必须包含 -S (暂停) 和 -gdb tcp::26000 (GDB端口)
"qemu-gdb-debug.startQemuCommand": "qemu-system-riscv64 -machine virt -bios default -kernel ${workspaceFolder}/kernel/kernel -smp 3 -m 128M -nographic -global virtio-mmio.force-legacy=false -S -gdb tcp::26000",
// 2. GDB 服务器地址和端口
"qemu-gdb-debug.serverAddress": "localhost:26000",
// 3. GDB 调试器的绝对路径
// 请确认 '/usr/bin/gdb-multiarch' 是你系统中实际的路径
"qemu-gdb-debug.gdbPath": "/usr/bin/gdb-multiarch",
// 4. 可执行文件路径 (用于GDB加载调试符号)
"qemu-gdb-debug.executablePath": "${workspaceFolder}/kernel/kernel",
// 5. QEMU 停止命令 (可选,用于调试结束时自动清理 QEMU 进程)
"qemu-gdb-debug.stopQemuCommand": "pkill -f qemu-system-riscv64",
// 6. GDB 启动时的初始化命令 (可选,用于设置 RISC-V 架构)
// 这是一个数组,用于在连接前执行 GDB 命令,相当于 launch.json 中的 setupCommands
"qemu-gdb-debug.gdbInitCommands": [
"set architecture riscv:rv64"
]
}
3. 运行调试
ctrl+shift+P 后 输入 debug witch qemu and gdb 找到对应项后敲击回车即可。

4.效果展示

5119

被折叠的 条评论
为什么被折叠?



