跳转至

调试技巧

  1. 如果仿真很慢,可以把所有 check 函数注释掉,直接测试后面的代码。

  2. 在调试时可以随意修改代码,比如调换顺序或添加 print 调试信息等等。但最后需要运行完整的原始版本。

  3. 你可能需要利用 objdump 工具对 ucorerbl 进行反汇编来查看具体执行的指令。

    riscv64-unknown-elf-objdump -d bin/kernel > kernel.S

    riscv64-unknown-elf-objdump -d rbl > rbl.S

  4. 在这个实验中 QEMU 的最大作用是可以跟 CPU 的仿真结果做对拍,方便 debug。运行 QEMU 时加上 -d in_asm 参数就可以输出执行的指令(不严格是指令序列),仿真时也可以加上输出 pc,两边 diff 一下即可。

  5. 可以在前面几个规模较小的 lab 上进行测试,查看 CPU 出现的问题。但是前面几个 lab 没有做更新,可能会无法编译。因此使用时需要参考 lab8 对应的 commit 记录对 lab 内的文件进行修改后再编译。


最后更新: 2022年11月13日
作者:cuibst