Невозможно получить доступ к пространству ядра при отладке xv6 с QEMU и GDB - PullRequest
0 голосов
/ 22 марта 2020

Я изучаю версию 2019 MIT 6.828 / 6.S081: Разработка операционной системы .

Я пытался подключить GDB к xv6, работающему на RIS C -V, используя QEMU, чтобы узнать, что происходит, когда происходит переключение контекста между пользовательским режимом и режимом ядра.

После делая make qemu-gdb и gdb в одном каталоге, моя 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

Среда:

Узел VM: 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

G CC : 9.2.0

Очень ценю, что кто-нибудь может поделиться некоторым пониманием того, что здесь происходит. Большое спасибо!

...