问题

最近在学习 MIT的操作系统课程,课程网址: https://pdos.csail.mit.edu/6.828/2021/schedule.html

在lecture 4 Page Tables 这一课的演示部分,教授使用qemu与riscv64-linux-gnu-gdb 工具调试操作系统的启动过程,但我在 WSL debain系统中发现没有 riscv64-linux-gnu-gdb 工具,搜索后发现使用 gdb-multiarch 工具也可以进行调试,但调试过程中遇到一些问题,记录一下实验流程。

过程

环境搭建参考链接: tools

windows:
 1. 首先需要安装 Windows Subsystem for Linux  过程略
 2. 登陆到 WSL中, 我使用的是 debain, 在命令行执行如下代码, 如果使用root用户执行,可去除 sudo`sudo apt-get update && sudo apt-get upgrade`
 `sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu`

如果不配置 ~/.gdbinit 文件,会遇到无法调试的问题

  • 以下默认都使用root用户来进行操作
    1. 在用户目录下 新建 .gdbinit 文件 (默认你已经知道linux基础命令)
      vim ~/.gdbinit
      写入如下内容: set auto-load safe-path /
      保存退出
    2. 打开一个终端,在课程代码目录xv6-riscv下执行: make CPUS=1 qemu-gdb
      课程代码地址
      打开另一个终端,执行 gdb-multiarch

说明

  1. 最重要的步骤是需要在用户家目录下新建 .gdbinit 文件,并写入 set auto-load safe-path /, 注意linux用户权限问题
  2. 用 gdb-multiarch 代替 教授使用的 riscv64-linux-gnu-gdb