无法进入 xv6 中的 ecall

问题描述 投票:0回答:1

我正在上2023年版课程的陷阱讲座。按照 here 的说明,我可以

stepi
进入 ecall 指令并查看跳转到 trapframe 的情况。

这似乎没有发生,它自动跳转到

ret
这个答案提出了同样的问题,解决方案建议使用newlib版本的riscv64编译器。

因此,我安装了

binutils-riscv64-unknown-elf_2.34-0ubuntu1_amd64.deb
gcc-riscv64-unknown-elf_10.2.0-0ubuntu1_amd64.deb
软件包,它们为我提供了带有 newlib 支持的 riscv64-unknown-elf-gcc (较新的版本似乎是使用
--without-newlib
标志构建的)

但是,在运行

gdb-multiarch
时,我仍然无法进入ecall函数。我使用的是 Ubuntu 24.04 LTS。这与 ubuntu 有关,还是我使用 gdb-multiarch 而不是
riscv64-unknown-elf-gdb
有关?由于某种原因,我似乎无法在网上找到这个,而且我的系统太脆弱,无法构建任何二进制文件,因此找到这个的任何线索都会有所帮助。

gdb qemu riscv xv6
1个回答
0
投票

我不知道为什么不能stepi它,但是你可以通过'b *$stvec'设置其他断点来解决它

© www.soinside.com 2019 - 2024. All rights reserved.