gpt4 book ai didi

linux-kernel - 使用 QEMU 和 GDB 调试 xv6 时无法访问内核空间

转载 作者:行者123 更新时间:2023-12-05 07:11:22 60 4
gpt4 key购买 nike

我正在自学2019版MIT 6.828/6.S081: Operating System Engineering .

我尝试使用 QEMU 将 GDB 附加到在 RISC-V 上运行的 xv6,以了解在用户模式和内核模式之间发生上下文切换时发生了什么。

做完之后 make qemu-gdbgdb在同一目录中,我的 GDB 成功连接到 QEMU。然而:

(gdb) x/2i $pc
=> 0xd8c: ecall
0xd90: ret

问题是: 现在如果我 stepi ,它“跳过”到0xd90而不是进入内核空间。

此外,不允许访问任何内核地址,就好像我在调试一个普通的用户态程序一样:

(gdb) i r stvec
stvec 0x3ffffff000 274877902848
(gdb) x/i $stvec
0x3ffffff000: Cannot access memory at address 0x3ffffff000

环境:

主机虚拟机:Manjaro 19.0.2

sudo pacman -Syy

sudo pacman -S riscv64-linux-gnu-binutils riscv64-linux-gnu-gcc riscv64-linux-gnu-gdb qemu-arch-extra

GDB:9.1

QEMU:4.2.0

海湾合作委员会:9.2.0

非常感谢任何人都可以分享一些关于这里发生的事情的见解。非常感谢!

最佳答案

我想你的代码是在 ubuntu 上运行的,这是我遇到的问题,然后我换到 mac,并使用 mit 工具教程,最后,它成功了。

  1. 在一个窗口中运行 make CPUS=1 qemu-gdb
  2. 在另一个窗口中运行 riscv64-unknown-elf-gdb

忽略 Python 异常

关于linux-kernel - 使用 QEMU 和 GDB 调试 xv6 时无法访问内核空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60795578/

60 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com