2020 MIT6.s081 XV6操作系统调试

友情链接:全部实验哟

环境准备

  1. 操作系统:本人采用的操作系统版本为Ubuntu 20.04.2 LTS

    # 进入wsl系统
    $ wslfetch
    

    在这里插入图片描述

  2. 实验代码xv6-labs-2020

  3. gdb调试工具gbd-multiarch, 该工具可通过命令sudo agt-get install gdb-multiarch下载。

    $ sudo agt-get install gdb-multiarch
    $ gdb-multiarch --version
    GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2
    Copyright (C) 2020 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    
    

启动调试

  1. 首先进入文件夹xv6-labs-2020,启动xv6系统。

    $ cd xv6-labs-2020
    $ make CPUS=1 qemu-gdb
    
  2. 其次,启动gdb调试工具。

    $ cd xv6-labs-2020
    $ gdb-multiarch
    显示如下:
    

    在这里插入图片描述

    按照提示,在/home/xxx/.gdbinit文件中添加如下内容:

    add-auto-load-safe-path /home/xxx/project/mit6s081/xv6-labs-2020/.gdbinit
    

    再次执行gdb-muliarch,显示如下即可:
    在这里插入图片描述


调试步骤

  1. 调试内核:gdb-multiarch的窗口输入如下命令:

    (gdb) b _entry # 在entry处加上断点
    (gdb) info address _entry # 查看entry的地址
    0x80000000
    (gdb) b main # 在kernel的main函数上加断点
    (gdb) b userinit # 在userinit函数上加断点
    (gdb) c # 让系统跑起来,此时可以开始调试了
    (gdb) layout split # 将gdb的窗口划分为多个,方便查看代码和指令
    
    
    
  2. 调试工具类可执行文件:在gdb中输入如下命令

    (gdb) file user/_usertests # 还可以类似于user/_xargs等
    (gdb) b main
    (gdb) c
    # 此时,待内核代码启动完成之后,输入usertests命令,便可以在调试窗口进行调试。
    

    在这里插入图片描述


gdb layout

gdb的layout命令可以在调试时查看源码,寄存器,以及汇编代码。常用的指令如下:

指令用途
layout src显示源代码窗口
layout asm显示汇编窗口
layout regs显示寄存器窗口
layout split显示源代码窗口和寄存器窗口
layout next显示下一个layout
layout pre显示前一个layout
Ctrl + L刷新当前窗口
Ctrl + x,再按1单窗口模式,显示一个窗口
Ctrl + x,再按2双窗口模式,显示两个窗口
Ctrl + x,再按a回到执行layout之前的普通窗口

GDB调试常用命令

  1. where: 查看栈帧
  2. finish: 停止当前函数,返回至上一个函数
  3. x/i 0x80001f2e,查看地址中的指令和指令所在的函数名
  4. print $ra, 打印ra寄存器的内容

参考链接

https://zhuanlan.zhihu.com/p/466424852

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值