使用方法 - bet4it/arceos GitHub Wiki

克隆仓库:

git clone --recursive https://github.com/bet4it/arceos.git

ArceOS启动之后会自动在QEMU里面监听5555端口,被映射到主机的5555端口。

通过gdb-multiarch连接该端口,然后就可以进行调试了。

[!NOTE] 在操作系统启动过程中如果有页表切换的情况,不可以直接在页表切换之后的地址下断点,需要在相关的语句手动stepi后才能进行后续调试。

X86_64下调试NimbOS:

$ make A=apps/hv ARCH=x86_64 HV=y NET=y run
$ gdb -q
(gdb) target remote :5555
Remote debugging using :5555
0x0000000000008000 in ?? ()
(gdb) break *0x2000a9
Breakpoint 1 at 0x2000a9
(gdb) continue
Continuing.

Breakpoint 1, 0x00000000002000a9 in ?? ()
(gdb) delete 1
(gdb) stepi
0xffffff80002035a0 in ?? ()

RISC-V下调试Linux:

$ make A=apps/hv ARCH=riscv64 HV=y NET=y run
$ gdb-multiarch
(gdb) target remote :5555
Remote debugging using :5555
0x0000000090200000 in ?? ()
(gdb) break *0x90201044
Breakpoint 1 at 0x90201044
(gdb) continue
Continuing.

Breakpoint 1, 0x0000000090201044 in ?? ()
(gdb) delete 1
(gdb) stepi 8
0xffffffff80001064 in ?? ()
(gdb) break *0xFFFFFFFF80A05BA0
Breakpoint 2 at 0xffffffff80a05ba0
(gdb) continue
Continuing.

Breakpoint 2, 0xffffffff80a05ba0 in ?? ()