【问题标题】:How to debug UEFI (UDK2014) Shell application Using Visual Studio如何使用 Visual Studio 调试 UEFI (UDK2014) Shell 应用程序
【发布时间】:2014-10-29 00:28:25
【问题描述】:

我已经从 taniacore 站点下载了 EDK (UEDK2014),并且我已经使用以下命令在调试模式下成功构建了 UEFI 应用程序

 C:\UDK2014.Complete.MyWorkSpace\UDK2014.MyWorkSpace\MyWorkSpace>
 build -t VS2012x86  -b DEBUG

由于它处于调试模式,它将创建一个 .pdb 文件 (SecMain.pdb)。我的问题是如何使用 VS 2010 调试这个二进制文件。 我尝试通过运行 SecMain.exe 来做到这一点,将其附加到 Visual Studio 2010 并开始调试,但无法做到这一点。以前有人可以这样做吗(使用 VS 2010 调试 UEFi 应用程序)?如果您对此有解决方案,请告诉我。

【问题讨论】:

标签: c visual-studio-2010 visual-studio debugging uefi


【解决方案1】:

是的,您可以像@sun2sirius 所说的那样使用模拟器。唯一的问题是,如果您的 UEFI 应用程序或驱动程序直接访问硬件,则模拟器将无济于事。在这种情况下,不幸的是“printf”是你最好的朋友。如此好的 Trace/Log 库将帮助您调试驱动程序。

有几种方法可以简化开发:

  • 尽可能多地编写独立于平台的代码。在 Windows 下的 VS IDE 中更容易调试。 Windows 已保护内存页面,调试器将捕获所有潜在的内存问题; UEFI 处于实模式,因此您的平台相关代码无法防止访问粪便指针、缓冲区溢出等。因此,Trace/Log 库再次提供了很大帮助。
  • 市场上有类似Arium的硬件调试器。它可以调试在真实硬件上运行的 UEFI 应用程序。但它很昂贵,而且你调试的硬件必须有一个可用的硬件调试端口。在台式机上不难找到,但在生产笔记本电脑上它是一种罕见的野兽!因此,如果您需要调试特定平台,则必须焊接连接器。
  • 在 UEFI 驱动程序开发的情况下,即使硬件调试器也没有太大帮助,因为您必须在安装的平台上安装 UEFI 固件 (BIOS) 的调试版本才能使用调试器。

【讨论】:

  • 让我补充一点,Phoenix Core Architect 和 Intel UDK Debugger Tool 实际上可以让您通过串行或 USB 连接在真实硬件上调试 BIOS 代码。这些调试器利用调试代理(在 SourceLevelDebugPkg 中),它使用 CPU 调试寄存器,与 Arium 相同,通过断点、中断 I/O 端口和内存访问、变量监视、堆栈跟踪和许多更酷的东西来实现完整的源级调试.在某些方面,这些调试器甚至比 Arium 更强大,除了此类调试仅在加载调试代理后可用,而 Arium 在重置后即可使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-08
相关资源
最近更新 更多