朋友调试一个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宏里面做好选择判断就可以了。
分享到:
相关推荐
DebugView由Sysinternals公司开发,它可以捕获系统级别的调试输出,包括来自DbgPrint的输出,即使在没有使用内核调试器的情况下也能查看这些信息。 DbgPrint函数的输出有多种级别,例如DPFLTR_ERROR_LEVEL、DPFLTR_...
关于DebugView无法打印出DbgPrint信息 - **DebugView**:一种用于捕获DbgPrint输出的工具。 - **DbgPrint**:Windows内核模式下的调试函数,用于输出调试信息。 - **解决办法**:确保驱动程序正确调用了DbgPrint,...
- DebugView为开发者提供了一种更为便捷的解决方案,使得他们能够在不需要修改代码的情况下轻松查看调试信息。 **2. 使用优势** - **灵活性**:支持多种类型的调试输出,不仅限于Win32 API,还包括内核模式API。 - ...
DebugView Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上或通过 Internet 查看和记录调试...
根据提供的文档内容,我们可以总结出关于Windows WDM驱动开发的相关知识点。以下是对这些知识点的详细说明: ### Windows WDM驱动开发概述 #### 1.1 本教程的规划: 本教程旨在详细介绍Windows WDM(Windows ...
2. **使用说明**:详细介绍如何使用DebugView.exe工具来查看和分析调试信息。 ##### 9.2 使用DbgPrint函数 1. **DbgPrint函数简介**:解释DbgPrint函数的作用和使用方法。 2. **DbgPrint函数示例**:通过示例来...
DebugView Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上或通过 Internet 查看和记录调试...
DebugView Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上或通过 Internet 查看和记录...
DebugView Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上或通过 Internet 查看和记录...
DebugView Another first from Sysinternals: This program intercepts calls made to DbgPrint by device drivers and OutputDebugString made by Win32 programs. It allows for viewing and recording of debug ...
DebugView Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上或通过 Internet 查看和记录...
DebugView v4.76(2008 年 10 月 16 日) Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上...