关于DebugView无法打印出DbgPrint信息

朋友调试一个Filter驱动程序,但终究无法在Debugview中打印出调试信息。
#if DBG

extern INT filterDebugLevel;


#define DEBUGP(lev, stmt) \
{ \
if ((lev) <= filterDebugLevel) \
{ \
DbgPrint("NDISLWF: "); DbgPrint stmt; \
} \
}

#define DEBUGPDUMP(lev, pBuf, Len) \
{ \
if ((lev) <= filterDebugLevel) \
{ \
DbgPrintHexDump((PUCHAR)(pBuf), (ULONG)(Len)); \
} \
}

#define FILTER_ASSERT(exp) \
{ \
if (!(exp)) \
{ \
DbgPrint("Filter: assert " #exp " failed in" \
" file %s, line %d\n", __FILE__, __LINE__); \
DbgBreakPoint(); \
} \
}
#endif //endDBG


要打印的东西其实很简单比如:
DEBUGP(DL_TRACE,("===>DriverEntry...\n"));

她以为总自己dbgprint()函数用错了,或者这个定义的宏有问题,估计是没有看清这个宏的定义,没有看清楚打印调试信息的条件,里面定义了debuglevel,这个值必须小于等于某个值的时候才打印出来,所以如果你在成功调试程序之后,可能不希望再打印出用于跟踪调试的信息,那么可能会把调试等级debuglevel的值调高。默认的调试等级定义如下:
//
// Message verbosity: lower values indicate higher urgency
//
#define DL_EXTRA_LOUD 20
#define DL_VERY_LOUD 10
#define DL_LOUD 8
#define DL_INFO 6
#define DL_TRACE 5
#define DL_WARN 4
#define DL_ERROR 2
#define DL_FATAL 0

之所以没有打印出来是因为debuglevel的值为:
INT             	filterDebugLevel = DL_WARN;

这下才恍然大悟~【DL_TRACE > DL_WARN】微软的代码其实这样写很方便,比如你需要自己在增添某些自己增加的调试信息,而不希望看见其他的原来的调试信息,就可以自己定义一个debuglevel值。然后在DEBUG宏里面做好选择判断就可以了。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值