/ Windows / 115浏览

如何使用 DbgView 来查看调试信息

背景

在驱动开发调试过程中,经常用到需要查看输出。最简单的方式就是采用 DebugView(DbgView.exe)来查看输出。

准备

  • DbgView.exe 存在于 Sysinternals Suit 中,通常只需要下载 Sysinternals Suit 中即可。详情可参考:Sysinternals Suite - Windows Sysinternals | Microsoft Docs
  • 在注册表的 HKLMSYSTEMCurrentControlSetControlSession Manager 下增加一个 Debug Print Filter 的键(这个键通常不存在)。在新建的键中,添加一个 DEFAULT 的 DWORD 值,并将其值设置为 8(理论上说,只要位3置位的任意值均可)。—-Windows Vista 后的系统都需要。如下图
  • 重启!重启!重启!
  • 对于驱动而言,需要使用管理员权限打开 DbgView.exe,并且在 Capture 中勾选上 Capture Kernel。最好不要选中Capture Win32和Capture Global Win32,这样来自各个进程的输出不会搞乱显示。

代码输出打印

在驱动中,可通过 KdPrint 宏的方式来打印。如:

KdPrint(("Driver unload calledn"));

KdPrint 实际会在 DBG 下通过调用 DbgPrint 来输出,所以后面的参数跟 printf 保持一致即可。定义如下:

需要注意:KdPrint 后会跟两层括号,是因为宏不支持不定参数,所以通过这种骚操作来绕过。

#if DBG 

#define KdPrint(_x_) DbgPrint _x_

#else 

#define KdPrint(_x_)

#endif

💡 如果没有打印,应该是内核调试输出未开启。通过 ed nt!Kd_DEFAULT_MASK 0xffffffff 开启。

如何通过 C++ 实时监听 ETW 事件
如何通过 C++ 实时监听 ETW 事件
【译】调查并确定 Windows 运行速度变慢问题
【译】调查并确定 Windows 运行速度变慢问题
【译】丢失的 WPA 文档 —— 磁盘使用
【译】丢失的 WPA 文档 —— 磁盘使用
【译】丢失的 WPA 文档 —— CPU 调度
【译】丢失的 WPA 文档 —— CPU 调度
【译】丢失的 WPA 文档 —— CPU 采样
【译】丢失的 WPA 文档 —— CPU 采样
如何通过 PDH(Performance Data Helper) 获取性能计数器的值

0

  1. This post has no comment yet

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注