以edk2\MdeModulePkg\Application\HelloWorld这个项目作为调试目标。
VS2017, 新建 project,取名X64dbg_vs。
Visual C++ > Other > Makefile Project, 注意项目路径为HelloWord程序路径。
随便填写config中的字符串,以及output文件的名称。 Finish。
Makefile项目建好了:
右击项目 > 属性 > Debugging
Command设置为WinHost.exe。
Working Directory设置为C:\UEFIWorkspace\Build\EmulatorX64\DEBUG_VS2017\X64\, 注意X64后面的斜杠是需要的。
打开工程文件:
C:\UEFIWorkspace\edk2\MdeModulePkg\Application\HelloWorld\X64dbg_vs\X64dbg_vs\X64dbg_vs.vcxproj
找到
针对Debug x64部分进行修改,分别修改以下三个节点的内容:
修改之后的xml:
cd /D C:\UEFIWorkspace
set WORKSPACE=C:\UEFIWorkspace
call mybuild.bat
call edk2\edksetup.bat
call build.bat -p EmulatorPkg\EmulatorPkg.dsc -a X64 -m MdeModulePkg\Application\HelloWorld\HelloWorld.inf -b DEBUG
X64dbg_vs.exe
cd /D C:\UEFIWorkspace
set WORKSPACE=C:\UEFIWorkspace
call mybuild.bat
call edk2\edksetup.bat
call build.bat -p EmulatorPkg\EmulatorPkg.dsc -a X64 -m MdeModulePkg\Application\HelloWorld\HelloWorld.inf -b DEBUG clean
cd /D C:\UEFIWorkspace
set WORKSPACE=C:\UEFIWorkspace
call mybuild.bat
call edk2\edksetup.bat
call build.bat -p EmulatorPkg\EmulatorPkg.dsc -a X64 -m MdeModulePkg\Application\HelloWorld\HelloWorld.inf -b DEBUG clean
call build.bat -p EmulatorPkg\EmulatorPkg.dsc -a X64 -m MdeModulePkg\Application\HelloWorld\HelloWorld.inf -b DEBUG
将HelloWorld项目的源码HelloWorld.c添加到工程文件的Source Files中,方便后面调试时查看代码:
右击项目 > Build,观察控制台输出:
找一行源码添加断点,右击 > BreakPoint > Insert BreakPoint
按F5开始运行。
编译好的HelloWorld.efi和WinHost.exe在模拟器的同一目录下,也就是UEFI Shell更目录FS0:
进入FS0, 运行HellowWorld.efi, 运行到了断点处:
使用Visual Studio调试UEFI程序的方法大致如此。