如何调试UEFI(UDK2014)Shell应用程序使用Visual Studio

问题描述:

我从taniacore网站下载EDK(UEDK2014),我已经成功地在调试模式下使用建UEFI应用下面的命令如何调试UEFI(UDK2014)Shell应用程序使用Visual Studio

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

由于它处于调试模式,它将创建一个.pdb文件(SecMain.pdb)。我的问题是如何使用VS 2010 我trided这样做,通过运行SecMain.exe,将其连接到Visual Studio 2010和启动调试但不能够做到这一点调试此二进制文件。任何人都可以做到这一点(使用VS 2010调试UEFi应用程序)吗?请让我知道如果你有解决这个问题。

+0

我之前回答过类似的问题,请参见本:http://*.com/questions/21171455/building-uefi-driver-using-visual-studio/22083229#22083229 – sun2sirius 2015-03-28 17:24:44

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

有简化开发的几种方法:

  • 写尽可能多的平台无关的代码,你可以。更容易在Windows下的VS IDE中进行调试。 Windows已经保护了内存页面,调试器将捕获所有潜在的内存问题; UEFI处于实模式,因此您的平台相关代码不会受到访问冲突指针,缓冲区溢出等的保护。因此,Trace/Log库又是一大帮助。
  • 有市场就像Arium上的硬件调试器。它可以调试在真实硬件上运行的UEFI应用程序。但它很昂贵,而且您调试的硬件必须具有可用的硬件调试端口。在台式机上找到它并不难,但在生产型笔记本电脑上却很罕见!所以如果你需要调试一个特定的平台,你必须焊接连接器。 UEFI驱动程序开发的
  • 我连的情况下,因为你必须有内置的UEFI固件(BIOS)安装才能使用调试器平台上的调试硬件调试器没有太大的帮助。
+0

让我补充一点,凤凰科技的核心架构师和英特尔®UDK调试器工具实际上可让您通过串行或USB连接在实际硬件上调试BIOS代码。这些调试器使用调试代理(在SourceLevelDebugPkg中),该调试代理使用CPU调试寄存器,与Arium相同,通过断点实现全面的源代码级调试,I/O端口和内存访问,变量监视,堆栈跟踪以及更多更酷的事物。在某些方面,这些调试器比Arium功能更强大,除非这种调试仅在调试代理程序加载后可用,而Arium从复位开始即可使用。 – sun2sirius 2015-12-28 05:13:04