make rootfs #在 qemu 窗口输入小写字符 's', 启动测试用例服务程序。 s #在 qemu 窗口输入小写字符 'c', 启动测试用例客户端程序。 c # 通过 qemu 命令启动内核测试用例进行调试。 qemu-system-x86_64 -kernel ../../arch/x86/boot/bzImage -initrd ../rootfs.img -append nokaslr -S -s #在 qemu...
qemu-system-arm -M sabrelite -m 512m -kernel arch/arm/boot/zImage -dtb arch/arm/boot/dts/imx6dl-sabrelite.dtb -nographic -append "nokaslr console=ttymxc0" -S -s 参数说明: -M:具体机器架构类型,这里的sabrelite是arm架构下面的一种类型,具体qemu支持的的机器架构类型用下面的脚本查看: qemu-...
上面这行命令比之前多了两个参数,“-S”表示让CPU在将要执行第一条指令前暂停,“-s”表示让QEMU打开自带的GDB服务端功能,且网络端口号是1234。截图如下: 执行上面的命令后,会弹出QEMU的窗口: 从上图中可以看到QEMU窗口中间显示一行文字“Guest has not initialized the display(yet).”,此时QEMU已进入调试模式。...
sudo apt install gdb-multiarch -y 03 修改qemu启动命令 qemu的启动命令有两个修改点需要注意: 为了便于调试,最好不要开启smp 需要让qemu启动时停下来等待gdb的连接 run.sh脚本修改成如下内容: qemu-9.1.1/build/qemu-system-riscv64 -M virt -m 4G \ -bios opensbi/build/platform/generic/firmware/fw_jum...
调试Linux kernel源码要分两部分,分别是MMU开启之前与MMU开启之后,这是因为在没有打开MMU之前,CPU直接访问物理内存,而一旦MMU开启,CPU对memory系统的访问需要通过一系列的Translation table进行翻译,即访问的是虚拟地址空间。在MMU开启之前,内核代码是位置无关的代码(Position Independent Code, PIC),可以在任意地址上运行...
01 VScode调试MMU开启之前的kernel 有了调试OpenSBI的基础,再调试kernel,那设置相当简单了,如果你还没看过VSCode调试OpenSBI,请先查看另一篇文章:《VSCode+qemu+gdb可视化调试OpenSBI》 现在让我们来配置调试kerenl,先在VSCode中远程打开kernel目录 然后点击debug图标: ...
QEMU是一款开源的虚拟化软件,可以模拟多种硬件平台,包括x86、ARM等。GDB是一款强大的调试工具,可以用于调试各种程序,包括操作系统内核。 要使用QEMU和GDB调试内核,可以按照以下步骤进行...
Qemu按上述方式启动之后会暂停等待GDB的连接。 按照上图的方式,vmlinux是带符号信息的未压缩的内核,gdb启动之后,运行target remote localhost:1234连接qemu中-s指定的端口。接下来就可以设置断点了,后面的就和调试用户态程序的方法是一样的了。 其它 mount文件系统 ...
qemu-system-i386 -nographic -kernel $LINUX/arch/i386/boot/bzImage,使用的硬盘为:-initrd rootfs/rootfs.img.gz 1. 如果在启动时加“-s”可以启动调试模式 运行run,进入虚拟机 ./run (退出qume虚拟机:reboot -f) 1. 2. 查看bin文件,如下图,可以看到,只有busybox是有效的二进制可执行文件,其他的都是...