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类似。

相关推荐
GeW9 小时前
从"补短板"到"强优势"Linux与数据库认证成为产业跃迁人才支点
linux·数据库
HZZD_HZZD10 小时前
大口径摄像水表白皮书拆解:DN40加装改造与字轮识别实测
运维·物联网·腾讯云
PellyKoo11 小时前
【Ubuntu】GTX 1080 Ti 显卡占用为0但功率高达60W的排查与解决
linux·运维·ubuntu
Fruiticecake11 小时前
epoll 回显服务器是怎么工作的:从 accept 队列到就绪链表,以及它和 select / poll 的区别
linux
莫晓燚12 小时前
阿里云若依项目部署与日志采集---实战
运维·数据库·redis·阿里云·ruoyi
captain37612 小时前
MyBatis Plus(1)
java·服务器·mybatis
何中应12 小时前
Grafana如何共享面板
运维·grafana·可观测
科创致远12 小时前
ESOP 电子作业指导书 WiFi 网络应用实测报告
运维·服务器·网络
承渊政道12 小时前
Linux网络学习【从NAT与代理服务理解网络转发、探索内网穿透原理、再到认识DNS与ICMP、最后动手部署并测试内网穿透】
linux·网络·学习·内网穿透·dns·nat
重生之小比特12 小时前
【Linux系统】17 库制作与原理(下)
linux·运维·服务器