MIT6.S081的gdb调试方法

如何使用gdb调试MIT6.S081

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

1.配置环境

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

配置好环境后,

在命令行中输入命令:

sudo make qemu-gdb

应该会出现

另开一个终端,输入命令

gdb-multiarch

应该会出现

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

sudo apt-get install gdb-multiarch

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

The target architecture is assumed to be riscv:rv64

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

set architecture riscv:rv64

2.连接qemu-gdb

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

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

target remote localhost:25000

会出现

这个时候就连接上了

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

使用命令

file user/_xxx

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

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

b main

然后多次输入c继续执行

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

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

此后就可以继续调试了

总之gdb-multiarch的调试方法和gdb类似。

相关推荐
安科瑞刘鸿鹏4 分钟前
老旧小区用电安全保护装置#限流式防火保护器参数介绍#
运维·服务器·物联网·能源
ladymorgana12 分钟前
【运维笔记】windows 11 中提示:无法成功完成操作,因为文件包含病毒或潜在的垃圾软件。
运维·windows·笔记
Rain_Rong23 分钟前
linux检测硬盘
linux·运维·服务器
过过过呀Glik26 分钟前
在 Ubuntu 上安装 Muduo 网络库的详细指南
linux·c++·ubuntu·boost·muduo
我曾经是个程序员1 小时前
鸿蒙学习记录之http网络请求
服务器·学习·http
李昊哲小课1 小时前
deepin 安装 zookeeper
大数据·运维·zookeeper·debian·hbase
真真-真真1 小时前
WebXR
linux·运维·服务器
轩辰~2 小时前
网络协议入门
linux·服务器·开发语言·网络·arm开发·c++·网络协议
wanhengidc2 小时前
短视频运营行业该如何选择服务器?
运维·服务器
雨中rain3 小时前
Linux -- 从抢票逻辑理解线程互斥
linux·运维·c++