当前位置: 首页 > news >正文

RCore学习记录002

初次运行RCore和调试,这里使用的RCore代码是实验指导书的代码,而非RCore训练营的

讲两种方法,第一种是传统的gdb调试,在上一节中提到的riscv交叉编译工具链中的已经安装了riscv的gdb,另一种是基于CLion的可视化调试,虽然Rust的已经有了自己开发工具RustRover,但是调试的选项中并不存在远程调试,所以还是使用CLion加Rust插件的方式,另外,CLion有Linker脚本和汇编文件的高亮显示,这对于学习RCore这种操作系统开发是非常友好的

运行和调试

运行

  1. 在github的代码仓库https://github.com/rcore-os/rCore-Tutorial-v3拉下代码

    git clone https://github.com/rcore-os/rCore-Tutorial-v3
    
  2. 进入代码文件夹,并切换分支到ch1

    cd rCore-Tutorial-v3
    git checkout ch1
    
  3. 进入os文件夹,运行

    cd os
    make run
    
  4. 看到运行结果如图,表示运行成功

    在这里插入图片描述

传统gdb调试

  1. 在os文件夹下先执行清理命令,再执行调试命令

    make clean
    make debug
    
  2. 接着会打开调试窗口,回车,然后在rust_main打断点,再继续执行,看到如下图

    在这里插入图片描述

  3. 若想继续执行,输入c即可直接执行完毕

基于CLion的可视化调试

  1. 用CLion打开RCore项目

    在这里插入图片描述

  2. 增加远程调试,并按图中设置

    在这里插入图片描述

    调试器选择编译安装的riscv工具链中的gdb

    符号文件是编译出的os可执行文件,而不是加载到qemu中的os.bin

    sysroot就是os所在的文件夹

  3. 接着只需要打断点调试,先在os文件夹下执行命令

    make gdbserver
    

    可以开启gdb的远程调试

  4. 在CLion中点调试即可,如下图,在CLion中进行单步调试就可以了

    在这里插入图片描述

相关文章:

  • AI时代API安全挑战加剧,解读API防护的最佳方案
  • 浅谈鸿蒙跨平台开发框架ArkUI-X
  • Nginx 代理访问一个 Web 界面时缺少内容
  • S32K144入门笔记(十六):ADC的API函数解读
  • 洛谷 P3986 斐波那契数列
  • 【SoC基础】单片机常用总线
  • 银行数字化转型
  • Superagent 异步请求:如何处理复杂的 HTTP 场景
  • 【ARM】Linux内核驱动之ADC驱动开发,MAX11617驱动示例
  • 【技术】浏览器自动化框架的演变洞察
  • 安卓开发调用本地接口以及设置base_url思路
  • Flink Cdc TiDB详解
  • C++基础: Rule of five/zero/three
  • 机器学习中的分布统计量:从理论到应用
  • 【大模型】Token计算方式与DeepSeek输出速率测试
  • 单片机开发资源分析的实战——以STM32F103C8T6为例子的单片机资源分析
  • 机器学习中矩阵求导公式
  • ubuntu 根据src 包从新打包
  • 209. 长度最小的子数组
  • 【git】git管理规范--分支命名规范、CommitMessage规范
  • 荷兰外交大臣费尔德坎普将访华
  • 美国恶劣天气已造成至少28人死亡
  • 茅台总经理到访五粮液:面对白酒行业周期性调整,需要团结一心的合力
  • 光速晋级!2025年多哈世乒赛孙颖莎4比0战胜对手
  • 张家界一铁路致17人身亡,又有15岁女孩殒命,已开始加装护栏
  • 竞彩湃|欧联杯决赛前,曼联、热刺继续划水?