使用vscode+qemu+gdb 调试 os内核

背景

本人通过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.效果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值