除了加 fucntion 本身外
.C 的部份需要加上
#include <AmiLib.h>
或是只要在前面 宣告
VOID InitSTrace();
VOID STrace(CHAR8 *sFormat,...);
.INF 的部份需要加上
[Packages]
AmiCompatibilityPkg/AmiCompatibilityPkg.dec
[LibraryClasses]
#Depends on the Phase
#AmiDxeLib
#AmiPeiLib
使用方式
STrace("[DBG] Checkpoint = %x\n",Checkpoint);
STrace("[DBG] Checkpoint \n");
============================================
有些 Module MODULE_TYPE = BASE [Libary]
PEI 或 DXE 都有可能會用到 照上面加法會 Compile Failed
若要在 DXE 時 Trace
.C
#include <AmiDxeLib.h>
.inf
[LibraryClasses.X64]
AmiDxeLib
============================================
有些檔案已經有一些 TRACE 了
可以直接用 Macro 轉換成 STrace
就不用自己在寫一次
就不用自己在寫一次
#ifdef PEI_TRACE
#undef PEI_TRACE
#define _UNWRAP(PrintLevel, PeiServices, ...) STrace(##__VA_ARGS__)
#define PEI_TRACE(Expression) _UNWRAP Expression
#endif
#ifdef TRACE
#undef TRACE
#define _UNWRAP(PrintLevel, ...) STrace(##__VA_ARGS__)
#define TRACE(Expression) _UNWRAP Expression
#endif
#ifdef DEBUG
#undef DEBUG
#define _UNWRAP(PrintLevel, ...) STrace(##__VA_ARGS__)
#define DEBUG(Expression) _UNWRAP Expression
#endif
#ifdef PCI_TRACE
#undef PCI_TRACE
#define _UNWRAP(PrintLevel, ...) STrace(##__VA_ARGS__)
#define PCI_TRACE(Expression) _UNWRAP Expression
#endif
依樣畫葫蘆即可