使用WinDbg搭建edk2 DEBUG环境

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

  1. 进入到edk2根目录

  2. edksetup.bat
    
  3. 进入conf文件夹找到target.txt修改自己对应的编译器,如果为2017可不修改直接进行下一步

  4. edksetup.bat rebuild
    
  5. build -p OvmfPkg/OvmfPkgIa32X64.dsc -a IA32 -a X64 -D SOURCE_DEBUG_ENABLE
    
  6. 上面步骤一切顺利的话就会在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调试环境的过程,因为是首次接触该工具,很多功能笔者还不会使用,还需要学习一些进阶使用方法,如果看到此文章的小伙伴有非常熟悉此软件的,可以和笔者交流一下,谢谢

<think>好的,用户想了解与VisualeBios相关的技术问题。首先,我需要明确VisualeBios是什么。根据提供的引用,用户提到使用AMI的VisualeBIOS进行开发,主要用于笔记本BIOS研发,特别是UEFI 2.0环境下添加setup选项。这表明VisualeBIOS是AMI公司提供的一个BIOS开发工具,支持UEFI标准,可能基于EDK II框架。 接下来,用户的问题可能涉及如何配置开发环境、添加模块、处理编译问题或调试方法。引用中提到了设置环境变量、使用BAT脚本进行编译,以及在Visual Studio中查看反编译代码的方法。需要将这些信息整合,给出具体的步骤和建议。 例如,引用[3]提到使用build.bat脚本设置路径和工具目录,这可能涉及环境配置和编译流程。引用[1]提到在UEFI 2.0中添加setup选项,可能需要创建新的模块或修改现有代码。引用[4]关于Visual Studio的反编译功能可能帮助开发者在没有源代码时查看定义,这对调试有帮助。 另外,用户可能遇到Python模块安装的问题,如引用[2]中的错误,需要检查Python版本和路径设置。但这个问题可能与VisualeBios的核心开发无直接关联,属于周边工具配置的问题。 需要组织回答的结构,先介绍VisualeBios的基本信息,然后分步骤讲解配置、模块开发、编译、调试等常见任务,最后根据引用内容生成相关问题。确保回答符合用户的技术需求,并提供实际操作的指导,如脚本示例或设置选项的路径。 需要注意用户可能的真实需求:他们可能在开发过程中遇到环境配置、模块添加或编译错误的问题,需要具体的解决方案。同时,用户可能希望了解如何扩展BIOS的功能,如添加设置选项,这涉及到UEFI模块开发的知识。因此,回答应涵盖这些方面,并引用提供的资料来支持建议的步骤。</think>### VisualeBios相关技术解析 VisualeBios是AMI(American Megatrends)公司开发的BIOS/UEFI开发工具,主要用于笔记本和嵌入式设备的固件研发。以下结合引用内容梳理其核心技术要点: #### 1. **开发环境搭建** - **工具链配置**:需配置EDK II工具链和Windows驱动开发工具包(如EWDK)。环境变量设置示例如下: ```bat SET TOOLS_DIR=D:\VisualeBios_35\Tools SET EWDK_DIR=D:\EnterpriseWDK_rs2_release_15063_20170317-1834 SET path=%path%;%TOOLS_DIR%;%EWDK_DIR% ``` 此配置确保编译时能正确调用编译器与调试工具[^3]。 - **Python依赖**:部分模块可能依赖Python脚本,需注意Python版本兼容性。若安装visual模块失败,需检查Python解释器版本是否符合要求(≥2.2)并确认路径正确[^2]。 #### 2. **UEFI模块开发** - **添加Setup选项**:在UEFI 2.0中新增BIOS设置选项需创建独立模块,通常包括: 1. 定义选项的`UNI`文件(多语言字符串资源) 2. 编写配置逻辑的`C`代码 3. 修改`INF`文件描述模块依赖关系 4. 更新平台`DSC`文件声明模块[^1] - **示例代码结构**: ```c EFI_STATUS EFIAPI SetupEntryPoint(IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable) { // 注册Setup选项并绑定回调函数 return EFI_SUCCESS; } ``` #### 3. **编译与调试** - **自动化编译**:通过批处理脚本调用`nmake`或`build`命令,例如: ```bat @REM 清理并重新编译 nmake clean nmake all ``` 可集成到自定义的`build.bat`中实现一键编译[^3]。 - **源码分析**:在Visual Studio中启用**反编译查看功能**(需在`工具 > 选项 > 文本编辑器 > C# > 高级`中开启),便于调试无源码的组件[^4]。 #### 4. **调试技巧** - **串口日志输出**:在模块中插入`DEBUG((EFI_D_INFO, "Log message"))`语句,通过串口调试器捕获输出。 - **内存断点**:使用WinDbg或AMIDebugRx工具对特定内存地址设置断点。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值