chapter1练习

  • 本节难度:

本节任务

  • 运行 ch1 分支的代码。

  • 结合实验指导书,掌握代码的基本结构。

  • 自学 .ld makefile 两个格式文件的基本使用方法。能够基本读懂 os/kernel.ld 和 Makefile。

  • 运行 make debug, 自学 gdb 调试的方法,完成问答作业(lab1 报告要求)。

编程作业

问答作业

  1. 请学习 gdb 调试工具的使用(这对后续调试很重要),并通过 gdb 简单跟踪从机器加电到跳转到 0x80200000 的简单过程。只需要描述重要的跳转即可,只需要描述在 qemu 上的情况。

tips:

  • 事实上进入 rustsbi 之后就不需要使用 gdb 调试了。可以直接阅读代码。rustsbi起始代码

  • 可以使用示例代码 Makefile 中的 make debug 指令。

  • 一些可能用到的 gdb 指令:
    • x/10i 0x80000000 : 显示 0x80000000 处的10条汇编指令。

    • x/10i $pc : 显示即将执行的10条汇编指令。

    • x/10xw 0x80000000 : 显示 0x80000000 处的10条数据,格式为16进制32bit。

    • info register: 显示当前所有寄存器信息。

    • info r t0: 显示 t0 寄存器的值。

    • break funcname: 在目标函数第一条指令处设置断点。

    • break *0x80200000: 在 0x80200000 出设置断点。

    • continue: 执行直到碰到断点。

    • si: 单步执行一条汇编指令。