wince打印调试信息

时间:2021-12-08 17:51:31

1 DEBUGMSG

DEBUGMSG (
   Condition,
   Printf_expr
)

第1个参数决定是否打印,第2个参数是打印内容。

例:

DEBUGMSG(TRUE,  (TEXT("Testing item count against maximum %u \r\n"),
         dwMaxNumberOfItems));

这个函数在Debug模式下起作用,在Release模式下不工作。

值得一提的是,wince工程通常要编译为Release版本,但又同时希望关注一下个别驱动的调试信息。则可以在所关心的驱动文件中加入如下语句,DEBUGMSG又可以工作了。

#undef DEBUGMSG
#define DEBUGMSG(x,s) DEBUGMSG(1,s)

2 RETAILMSG

RETAILMSG (
   Expression,
   Message
)

第1个参数决定是否打印,第2个参数是打印内容。

例:

RETAILMSG(TRUE,  (TEXT("Testing item count against maximum %u \r\n"),
         dwMaxNumberOfItems));

这个函数在Debug和Release模式下都可以打印出调试信息。不过如果PB工程的"Build option"中选中"Enable ship build",则RETAILMSG函数就不会打印信息了。

3 NKDbgPrintfW

其实前两个函数的实现,都是通过调用NKDbgPrintfW来完成的。

void WINAPIV NKDbgPrintfW(
   LPCWSTR lpszFmt,
);

这个函数在Debug和Release模式下都可以打印出调试信息。

例:

NKDbgPrintfW(TEXT("Prints a string to the debug output stream.\n"));

一般希望只在Debug模式下打印调试信息时用DEBUGMSG。在Debug和Release模式下都打印调试信息用RETAILMSG。在OAL中打印调试信息用NKDbgPrintfW。不过上述三个函数能够使用的前提是wince的BSP实现了“打印串口”。