Posted on 2015-02-08 03:08
djx_zh 閱讀(6535)
評論(13) 編輯 收藏 引用
書中講到了如何利用_asm int 3 調(diào)試代碼。
_asm int 3需要配合Nt32Pkg使用。也就是說通過Nt32Pkg編譯出的.efi文件才能夠調(diào)試。
如果你帶_asm int 3語句的工程是通過非Nt32Pkg編譯出來的(例如AppPkg),在SecMain模擬器中調(diào)試會(huì)導(dǎo)致斷點(diǎn)停在Image.c文件如下代碼中

Image->Status = Image->EntryPoint (ImageHandle, Image->Info.SystemTable);
在模擬器控制臺會(huì)輸出
WARNING: No source level debug
表明SecMain在加載你的模塊時(shí)沒有成功加載調(diào)試符號。
解決方案在.inf文件中添加如下代碼
[BuildOptions]
MSFT:DEBUG_*_IA32_DLINK_FLAGS = /EXPORT:InitializeDriver=$(IMAGE_ENTRY_POINT) /ALIGN:4096 /FILEALIGN:4096 /SUBSYSTEM:CONSOLE