Linux内核调试
QEMU
OS课上需要用到qemu作为模拟器
Ubuntu 22.04 下安装新版QEMU
Ubuntu 22.04 apt 中的 qemu 只有 6.2 版本
git clone https://github.com/qemu/qemu.git
cd qemu
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev ninja-build
./configure --target-list=riscv64-softmmu
make -j$(nproc)
在执行./configure这一步时,如果遇到 ubuntu:Python‘s ensurepip module is not found.
QEMU指定调试端口
qemu的启动选项-s 默认是1234端口, 在gdb里面用target remote :1234 即可。
但是偶尔会遇到1234被占用。报错: qemu failed to find an available port: address already in use
此时可以在启动选项中修改端口。
将-s改成 -gdb tcp::3333 (其中3333可换成你想修改的端口号) 然后gdb也同样修改即可
GDB
Tip
在vscode的调试控制台里面,用-exec 'gdb命令' 的方式执行,不然会报错
查看内存
N:表示要显示多少个单元。f:表示显示的格式,x表示十六进制。u:表示单元的大小,b表示字节,h表示半字(2字节),w表示字(4字节),g表示巨字(8字节)。ADDR:是你要检查的内存地址。
例如,查看地址0x1000处的4个字节的内容,你可以使用: