0%

  • 跟着视频走一遍系统调用gdb的流程。tmux分割两个窗口,一个窗口作为服务器make CPUS=1 qemu-gdb,另一个窗口作为gdb调试窗口gdb-multiarch。将断点打在ecall指令处, continue执行,随后再将第二个断点打到print/x $stvec处也就是,TRAPFRAME的起始地址。ecall指令完成三件事,将用户模式切换到管理员模式、将PC保存到sepc寄存器中、将stvec寄存器的值赋给PC跳转到stvec保存的地址处执行。
Read more »