vscode调试mit6s081Lab

大家好,我叫徐锦桐,个人博客地址为www.xujintong.com,github地址为https://github.com/xjintong。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。

环境

  • mit6.s081的实验环境
  • gdb-multiarch(用于gdb调试,vscode调试实质上就是提供个图形化页面,底层还是这个)
// 安装 gdb-multiarch
sudo apt-get install gdb-multiarch

配置

首先终端输入make qemu-gdb,项目根目录产生一个.gdbinit文件。

image-20231203144927931

点开这个文件,然后记住画线的那个端口号,我这里是25000(你的可能不一样),然后删除画横线的这行

image-20231203145159081

vscode调试会用到个launch.json文件。

image-20231203145338636

launch.json文件配置如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug xv6",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/kernel/kernel",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "miDebuggerServerAddress": "localhost:25000",
            "miDebuggerPath": "/usr/bin/gdb-multiarch",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "pretty printing",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "logging": {
                // "engineLogging": true,
                // "programOutput": true,
            }
        }
    ]
}

这个配置文件有两个需要改的地方。一个是miDebuggerServerAddress这一项需要把端口改为.gdbinit文件中的那个端口号。第二个是miDebuggerPath这里,要填成自己gdb-multiarc的位置(ubuntu应该默认就是这个位置)。

调试流程

  • 1、终端输入make qemu-gdb
  • 2、按F5进入调试,它会跳到kernel的main函数。

image-20231203150826935

  • 2、在调试控制台,输入-exec file user/_sleep(这里是个例子,表示切换到sleep.c的符号表),输出Reading symbols from user/_sleep表示成功了。前面加上-exec表示这个gdb命令。

    image-20231203150352939

  • 3、然后就可以在sleep.c文件中打断点了,断点是红色的表示打成功了。

image-20231203151029814

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐锦桐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值