xv6代码调试

233 阅读1分钟

1. 环境配置

  1. 基于VMware安装Ubuntu 22.04系统
  2. 安装如下软件
sudo apt install -y git build-essential gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu gdb-multiarch qemu-system-misc u-boot-qemu qemu-utils
  1. 拉取xv6代码

为了避免github访问速度慢的问题,笔者在gitee上Fork了一份代码。原始代码链接为:Github原始仓。 可通过如下命令将代码克隆到本地:

git clone git@gitee.com:ZhangYu-Home/xv6-riscv.git
  1. 生成compile_commands.json文件用于代码跳转:
bear --output compile_commands.json -- make qemu

2. GDB调试命令记录

  • 启动一个终端(终端1),进入xv6代码目录,执行如下命令,进程阻塞,并提示gdb远程端口为26000

    make qemu-gdb
    
  • 启动另一个终端(终端2),进入xv6代码目录,执行如下命令

    gdb-multiarch kernel/kernel
    
  • 在终端2执行如下命令,与终端1的远程调试端口连接

    target remote localhost:26000
    
  • 在终端2的gdb窗口执行如下打断点的命令

    b exec
    

3. 相关知识记录

  1. C语言中内嵌汇编