Debug Uefi

偶然的机会需要在UEFI boot阶段进行调试,但之前没接触过,不知道怎么搭建调试环境,网上搜了一些文章讲的一知半解的,遂写一下怎么设置相关环境。

现在一般使用Intel开源的UEFI编写相关代码并调试

https://github.com/tianocore/edk2 下载好后进入vs2022开发人员提示终端执行,需要注意的是该项目依赖于NASM,需要设置环境变量NASM_PREFIX指向nasm所在目录,此外还需要下载iasl,安装并添加到PATH环境变量。执行

edksetup.bat Rebuild

而后就可以使用命令build -p AppPkg\AppPkg.dsc -a IA32/X64编译相关模块了,对于本地调试环境主要要的是OvmfPkg这个包

build -a X64 -b DEBUG -p OvmfPkg/OvmfPkgX64.dsc

编译好之后将ovmf.fd拷贝到一个目录下,下载qemu for windows并安装,将其添加到环境变量内,随后需要制作qemu启动所需的hdd

qemu-img.exe create -f raw windows.img 60G
qemu-system-x86_64.exe -L . -bios OVMF.fd -hdd windows.img -cdrom Windows.iso -boot d -m 4096 -smp 4 -debugcon file:debug.log -global isa-debugcon.iobase=0x402

之后启动系统

qemu-system-x86_64.exe -L . -bios OVMF.fd -hdd windows.img -cdrom .\win1020h2.iso -boot d -m 4096 -debugcon file:debug.log -global isa-debugcon.iobase=0x402  -m 4096 -smp 4  -boot menu=on,splash-time=5000

通过debuglog确定UEFI模块的entry point,这个地址一般是不变的,得到地址之后在qemu命令行添加-s -S参数使得刚开始就停止,而后使用windbg附加。

4.png

即可使用windbg进行调试。

创建于:Monday, October 13,2025
最后修改于: Monday, October 13,2025