1 使用WinDbg搭建edk2 DEBUG环境
相信所有开发UEFI的小伙伴在刚接触UEFI的时候肯定都是一头雾水,等到稍微入门了一点之后,当我们想开发一个新功能的时候碰到了一些奇奇怪怪的错误想要去调试,笔者在刚接触的时候组里的师傅都是使用串口打印来调试,这种调试方法是单向的,相当于串口打印出你想看到的某些值,无法实现对寄存器的修改。直到笔者看到了一个关于edk2即时调试的视频(该视频为公司内部视频,笔者不能对外提供),此处笔者可以提供该项目搭建环境所需要的Tools以及源代码(经实验可以正常使用)。下面就开始edk2即时调试环境的搭建介绍。
1.1 环境准备
- 笔者所有环境以及软件安装都是在Windows10下完成,但是Tools中也提供了相关Linux软件,如需请自行测试
- dbg_x86_6.11.1.404
- iasl-win-20201217(编译工具,安装好需设置环境变量)
- nasm-2.15.05-installer-x64(编译工具,安装好需设置环境变量)
- putty-0.74-installer(笔者未用到此工具,如有需要请自行安装)
- qemu-0.13.0-windows(qemu虚拟机,模拟Shell环境,无需安装,解压出来即可)
- UDK_Debugger_Tool_v1_5_Win
- vspd(虚拟串口工具)
- edk2源码
- 编译工具Visual Studio 2015(视频中讲解为2017,笔者实测2015也能够完成编译)
1.2 安装注意事项
-
所有软件的安装路径建议默认位置,如C盘更改可自行调整
-
在安装UDK_Debugger_Tool_v1_5_Win前,请先安装dbg_x86_6.11.1.404,因为安装UDK_Debugger_Tool_v1_5_Win时会检测是否安装dbg_x86_6.11.1.404
-
安装好vspd后,打开add默认COM1和COM2,下图为add之后,可以看到多了两个COM1和COM2串口
1.3 编译edk2
-
进入到edk2根目录
-
edksetup.bat
-
进入conf文件夹找到target.txt修改自己对应的编译器,如果为2017可不修改直接进行下一步
-
edksetup.bat rebuild
-
build -p OvmfPkg/OvmfPkgIa32X64.dsc -a IA32 -a X64 -D SOURCE_DEBUG_ENABLE
-
上面步骤一切顺利的话就会在Build目录下生成相应的FD文件
- 编译完成之后将edk2\Build\Ovmf3264\DEBUG_VS2015x86\X64下HelloWorld.efi拷贝至qemu解压后根目录中
1.4 使用DEBUG TOOL
当以上步骤都做好了之后。我们就可以开始调试环境的搭建了
-
接着进入QEMU的根目录,使用CMD执行如下命令
qemu-system-x86_64.exe -bios d:\Download\Chrome\Edk2SourceDebugDemo-main\edk2\Build\Ovmf3264\DEBUG_VS2015x86\FV\OVMF.fd -L . -hda fat:rw:. -serial COM2
-
随后进入到tool界面全速运行,Go(F5),运行一会后可以暂停[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d9wt1ApV-1663574172975)(Debug Agent/image-20220919154607650.png)]
-
打开command串口在最下面输入q
- 随后在qemu启动的界面即可看到shell界面
- 输入fs0:,再输入HelloWorld.efi,即可看到不会有打印信息,会卡住,因为此处的HelloWorld文件插入了一个软件断点
- 随后进入tool界面,单步运行几步,即可看到如下界面
以上就是笔者搭建edk2调试环境的过程,因为是首次接触该工具,很多功能笔者还不会使用,还需要学习一些进阶使用方法,如果看到此文章的小伙伴有非常熟悉此软件的,可以和笔者交流一下,谢谢