`
yexin218
  • 浏览: 971068 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

关于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宏里面做好选择判断就可以了。
分享到:
评论

相关推荐

    DbgPrint函数流程分析[定义].pdf

    DebugView由Sysinternals公司开发,它可以捕获系统级别的调试输出,包括来自DbgPrint的输出,即使在没有使用内核调试器的情况下也能查看这些信息。 DbgPrint函数的输出有多种级别,例如DPFLTR_ERROR_LEVEL、DPFLTR_...

    Filter驱动开发笔记

    关于DebugView无法打印出DbgPrint信息 - **DebugView**:一种用于捕获DbgPrint输出的工具。 - **DbgPrint**:Windows内核模式下的调试函数,用于输出调试信息。 - **解决办法**:确保驱动程序正确调用了DbgPrint,...

    dbgView官方教程

    - DebugView为开发者提供了一种更为便捷的解决方案,使得他们能够在不需要修改代码的情况下轻松查看调试信息。 **2. 使用优势** - **灵活性**:支持多种类型的调试输出,不仅限于Win32 API,还包括内核模式API。 - ...

    调试开发工具集

    DebugView Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上或通过 Internet 查看和记录调试...

    Windows WDM驱动开发

    根据提供的文档内容,我们可以总结出关于Windows WDM驱动开发的相关知识点。以下是对这些知识点的详细说明: ### Windows WDM驱动开发概述 #### 1.1 本教程的规划: 本教程旨在详细介绍Windows WDM(Windows ...

    Windows_WDM驱动开发

    2. **使用说明**:详细介绍如何使用DebugView.exe工具来查看和分析调试信息。 ##### 9.2 使用DbgPrint函数 1. **DbgPrint函数简介**:解释DbgPrint函数的作用和使用方法。 2. **DbgPrint函数示例**:通过示例来...

    注册表批量修改权限命令

    DebugView Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上或通过 Internet 查看和记录调试...

    SysinternalsSuite

     DebugView  Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上或通过 Internet 查看和记录...

    Windows Sysinternals Suite v2019.06.29.zip

    DebugView Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上或通过 Internet 查看和记录...

    Sysinternals 实用程序全集 (完整版 49.2M)

    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 ...

    微软Sysinternals Suite工具包 2018.12.18 官方版.zip

    DebugView Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上或通过 Internet 查看和记录...

    Sysinternals 微软系统监控实用工具

    DebugView v4.76(2008 年 10 月 16 日) Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上...

Global site tag (gtag.js) - Google Analytics