我目前正在自学2020麻省理工学院6.S081:操作系统工程https://pdos.csail.mit.edu/6.828/2020/schedule.html。我已经按照MAC OS的所有步骤正确设置了环境。当我同时启动gdb和qemu时,我能够在调试内核可执行文件时正常地断点。

但是,当我尝试对用户可执行文件执行相同的操作时,我无法中断任何点,出现错误:
Cannot access memory at address 0x...

原来我可以为某些特定的行设置断点,但是当我点击continue时,在上面的屏幕截图中显示了另一个错误。
有什么办法解决这个问题吗?谢谢!
发布于 2021-09-21 14:19:19
你可以查看你的gdb是否警告你不能使用文件.gdbinit启动gdb?如果没有,您可以简单地向.gdbinit:set riscv use-compressed-breakpoints yes添加一行,如下所示:
set confirm off
set architecture riscv:rv64
target remote 127.0.0.1:26000
symbol-file kernel/kernel
set disassemble-next-line auto
set riscv use-compressed-breakpoints yes然后使用riscv64-unknown-elf-gdb启动gdb.You将会看到它工作良好。但是如果您收到警告,那么您应该使用riscv64-unknown-elf-gdb -iex 'add-auto-load-safe-path .'来另外启动gdb。
https://stackoverflow.com/questions/68501265
复制相似问题