【问题标题】:Cannot access memory when debugging xv6 user program using gdb使用 gdb 调试 xv6 用户程序时无法访问内存
【发布时间】:2021-09-30 16:54:19
【问题描述】:

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

但是,当我尝试对用户可执行文件执行相同操作时,我无法通过错误打破任何要点:

Cannot access memory at address 0x...

原来我可以为某些特定的行设置断点,但是当我点击继续时,上面的屏幕截图中显示了另一个错误。

有什么办法可以解决这个问题?谢谢!

【问题讨论】:

    标签: gdb riscv xv6


    【解决方案1】:

    您可以查看您的 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。你会看到它运行良好。 但如果你有警告,那么你应该使用 riscv64-unknown-elf-gdb -iex 'add-auto-load-safe-path .' 额外启动 gdb。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-03
      • 2014-07-19
      相关资源
      最近更新 更多