侧边栏壁纸
博主头像
微尘 博主等级

行动起来,活在当下

  • 累计撰写 132 篇文章
  • 累计创建 1 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

vscode调试mit6s081Lab

Administrator
2023-12-03 / 0 评论 / 0 点赞 / 5 阅读 / 0 字

环境

  • 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

0

评论区