• MIT6.S081的gdb调试方法


    如何使用gdb调试MIT6.S081

    在做MIT6.S081实验的时候我们可能会用到gdb来调试程序。那么具体方法是什么呢?

    1.配置环境

    首先根据官方指南配置好MIT6.S081,具体可见:MIT6.S081实验环境搭建

    配置好环境后,

    命令行中输入命令:

    sudo make qemu-gdb
    
    • 1

    应该会出现

    在这里插入图片描述

    另开一个终端,输入命令

    gdb-multiarch
    
    • 1

    应该会出现

    在这里插入图片描述

    没出现也没关系,如果提示没有gdb-multiarch,使用命令安装就行

    sudo apt-get install gdb-multiarch
    
    • 1

    如果启动gdb-multiarch的提示信息没有

    The target architecture is assumed to be riscv:rv64
    
    • 1

    那么(每次)启动后需要输入

    set architecture riscv:rv64
    
    • 1

    在这里插入图片描述

    2.连接qemu-gdb

    在上面我们输入了sudo make qemu-gdb之后,出现的信息里面有

    在这里插入图片描述

    这个就是我们要连接的端口,根据这个端口,在gdb-multiarch中输入

    target remote localhost:25000
    
    • 1

    会出现

    在这里插入图片描述

    这个时候就连接上了

    3.加载可执行文件进行调试

    使用命令

    file user/_xxx
    
    • 1

    来加载可执行文件,例如 file user/_sleep(注意有下划线)

    在这里插入图片描述

    这个时候可以开始打断点了,例如

    b main
    
    • 1

    然后多次输入c继续执行

    在这里插入图片描述

    输入到原来的终端应该会有变化

    在这里插入图片描述

    在这里就要输入我们程序的参数了,第一个参数是程序的名字,后面的参数视具体情况而定,例如sleep应该有一个表示多少时间的参数:
    在这里插入图片描述

    此后就可以继续调试了

    在这里插入图片描述
    总之gdb-multiarch的调试方法和gdb类似。

    4.保存调试配置

    每次调试都要设置riscv:rv64和端口比较麻烦,可以将这两个步骤直接写到配置文件中,步骤为首先用nano ~/.gdbinit打开配置文件,然后把set architecture riscv:rv64target remote localhost:25000写入到配置文件中,如下:
    在这里插入图片描述
    然后按下Ctrl+O,再按下enter键保存。按下Ctrl+X退出即可。此时再次运行gdb-multiarch就可以直接调试了

  • 相关阅读:
    mybatis初体验(细节满满)
    如何在Windows11上使用macOS Sonoma全新的慢镜屏幕保护程序
    MySQL基本操作之修改表结构
    运维工程师面经
    HDFS的高级功能
    C#界面里的AccessibleName、AccessibleDescription和AccessibleRole属性
    七大顶尖 C++ 开源构建系统
    详解数仓中sequence的应用场景及优化
    获取店铺的所有商品API 返回值说明
    Azure Data Factory(九)基础知识回顾
  • 原文地址:https://blog.csdn.net/qq_46514141/article/details/133773708