朋友调试一个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 works on Windows NT 4.0, Windows 2000, Windows XP, Windows Server 2003, Windows 95, Windows 98 and Windows Me. Note: if you want to run DebugView on Windows 95 you must install the WinSock2 ...
它的Hook也就没有恢复,因此调试这个山寨DebugView的时候不能用DbgView, 因为一运行它就把那个函数给先Hook掉了。。。 因此我的DebugView加了卸载自己驱动的支持。。。 由于以上原因,如果你已经运行过...
DebugView是一个应用程序,可让您监视调试输出本地系统,或网络上您可以通过其访问的任何计算机 TCP/IP。它能够显示内核模式和Win32调试 输出,因此您不需要调试器来捕获调试输出 生成的应用程序或设备驱动程序,也...
dbgview调试信息查看器 调试用的调试信息查看器 调试用的
DbgPrint函数流程分析[定义].pdf
DebugView Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上或通过 Internet 查看和记录调试...
设置Dbgprint 打印调试
DebugView: Sysinternals 的又一首创: 该程序可以拦截设备驱动对 DbgPrint 的调用和Win32程序对OutputDebugString 的调用. 程序可以浏览或记录本机或远程计算机上调试会话的输出,而无须激活调试器. Desktops:...
DbgView 用于捕捉内核打印(驱动程序的DbgPrint) A
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 查看和记录...
易语言内存调试清零源码,内存调试清零,DriverUnload,DispatchCreate,DispatchClose,DispatchDeviceControl,ReadIntByAddr,DriverEntry,GetFunctionAddress,DbgPrint,DbgPrintInt,DbgPrintString,ExAllocatePool,...
驱动的dbgprint调式信息都能被dbgview工具捕捉到
DebugView v4.76(2008 年 10 月 16 日) Sysinternals 的另一个优先程序:此程序截取设备驱动程序对 DbgPrint 的调用和 Win32 程序生成的 OutputDebugString。它允许在不使用活动的调试器的情况下,在本地计算机上...
DebugPrint-监视OutputDebugString / DbgPrint(Ex)调用(不需要驱动程序) DriverMon-监视任何驾驶员活动 ErrorLookup -Win32(GetLastError)和NTSTATUS的错误代码描述 ETWExplorer-查看注册提供者的ETW XML清单...
DebugView Sysinternals 的另一个首开先例:这个程式会拦截分别由 DbgPrint 利用装置驱动程式,和 OutputDebugString 利用 Win32 程式所做的呼叫。它能够在您的本机上或跨往际往路,在不需要作用中的侦错工具...