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

相关推荐
明王明王几秒前
PVE 上用 SPICE:统一连接 Debian、Arch 和 Windows 11 桌面
运维·windows·debian
数字新视界2 分钟前
2026机房动环监控选型指南:场景规模需求、市场发展占有率和竞争梯队报告解析
大数据·运维·网络·人工智能·嵌入式硬件·机房动环监控·机房环境安全
夜雪一千5 分钟前
Python URL解码详解:单层、双重URL解码实战与踩坑指南
linux·服务器·python
程序员_小兵5 分钟前
PCIe Switch Fabric 技术解析
服务器·c语言·嵌入式硬件·php·fabric
Zs05097 分钟前
服务器使用率高处理思路
服务器
咯哦哦哦哦10 分钟前
配置VNC sever 6.11.0版本 linux(激活码)
linux·运维·服务器
guo_wen_qiang11 分钟前
jenkins流水线参数化配置
运维·docker·容器·jenkins·持续部署
傲世仙尊13 分钟前
序列化与自定义协议-把结构体拆成字节流再拼回来
linux·服务器·网络·arm开发
꯭自꯭闭꯭25 分钟前
DM主备集群以及读写分离集群搭建
linux·运维·数据库
倔强的石头10627 分钟前
【Linux指南】动静态库系列(九):动态库如何进入进程地址空间:从磁盘 .so 到共享内存映射
java·linux·服务器