MIT6s.081使用gdb新手调试入门

MIT6s.081使用gdb调试入门

系统:Windows虚拟机VMware下配置ubuntu20.04

参考文章:
MIT XV6 操作系统 实验全解
MIT 6S081 qemu-gdb debug调试新手指南!!!
Fall2020/6.S081-如何在 QEMU 中使用 gdb

在看2020版本视频课程lec3的时候,老师使用riscv64-linux-gnu-gdb对代码进行调试,发现自己的好像不行,而x86-64架构的Ubuntu 20.04,默认没有安装riscv64-unknown-elf-gdb。
无法通过riscv64-linux-gnu-gdb或者riscv64-unknown-elf-gdb进入gdb,显示**‘riscv64-xxx-gdb’ Command not found**。

可能有的人在 make-qemu-gdb后,另一个窗口键入 gdb, 即便能够进入gdb调试界面,打完断点b main又会显示’the program is not being running’。
在这里插入图片描述
找了各种解决方法都没办法解决,要安装各种奇奇怪怪的安装包,要么去清华源下载最新版gdb源码,要么安装riscv64-unknown-elf-gdb,都比较费时费力,我的方法如下:

按官方指南手册 安装必须的工具链

其实,在按照官网要求进行工具链配置时候,我们已经安装了gdb-multiarch的调试工具,就是下面这行代码,目前主流的也是采用gdb-multiarch

$ sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu 

首先我们打开两个终端窗口。
第窗口1输入make qemu-gdb,使用qemu可以用等待gdb调试在这里插入图片描述
在窗口中,修改主目录(注意是主目录,在隐藏文件里)下的 .gdbinit 文件,如下指令,意思是允许 gdb 在xv6-labs-2020这个目录启动的时候,加载该文件夹下的 .gdbinit 文件。注意这里把YOUR_PATH改成自己的目录,否则当你运行gdb-multiarch就会经常出现“add-auto-load-safe-path”相关的warnning

echo "add-auto-load-safe-path YOUR_PATH/xv6-labs-2020/.gdbinit " >> ~/.gdbinit

窗口2输入gdb-multiarch注意multiarch的拼写
在这里插入图片描述
界面显示0x0000000000001000 in ?? (),应该就是顺利进入gdb了。

接下来试一下打断点

可以看到,当窗口2里键入c的时候,窗口1进入xv6操作系统中了,并且窗口1运行ls后窗口2出现Thread相关信息
在这里插入图片描述

折腾了一个晚上,终于可以顺利调试,继续学习

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值