補(bǔ)充《UEFI原理與編程》中關(guān)于Edk2的調(diào)試
Posted on 2015-02-08 03:08 djx_zh 閱讀(6626) 評(píng)論(13) 編輯 收藏 引用書中講到了如何利用_asm int 3 調(diào)試代碼。
_asm int 3需要配合Nt32Pkg使用。也就是說通過Nt32Pkg編譯出的.efi文件才能夠調(diào)試。
如果你帶_asm int 3語(yǔ)句的工程是通過非Nt32Pkg編譯出來的(例如AppPkg),在SecMain模擬器中調(diào)試會(huì)導(dǎo)致斷點(diǎn)停在Image.c文件如下代碼中
Image->Status = Image->EntryPoint (ImageHandle, Image->Info.SystemTable);在模擬器控制臺(tái)會(huì)輸出
解決方案
在.inf文件中添加如下代碼
_asm int 3需要配合Nt32Pkg使用。也就是說通過Nt32Pkg編譯出的.efi文件才能夠調(diào)試。
如果你帶_asm int 3語(yǔ)句的工程是通過非Nt32Pkg編譯出來的(例如AppPkg),在SecMain模擬器中調(diào)試會(huì)導(dǎo)致斷點(diǎn)停在Image.c文件如下代碼中
WARNING: No source level debug
表明SecMain在加載你的模塊時(shí)沒有成功加載調(diào)試符號(hào)。解決方案
在.inf文件中添加如下代碼
[BuildOptions]
MSFT:DEBUG_*_IA32_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE
MSFT:DEBUG_*_IA32_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE

