内核跟踪Windows 7 WinDbg

内核跟踪Windows 7 WinDbg,windows,debugging,kernel,windbg,Windows,Debugging,Kernel,Windbg,在调试windows 7检查版dvd x86 398742时,我没有得到任何调试信息。 我甚至看不到我自己的跟踪信息(ATLTRACE)。 与之相反,WindowsXP的工作方式就像一个魔咒。 从Windows7开始调试会话时,我收到“Bad QueryIdType:5”消息。 显然,内核调试设置正确。 请帮助…好的,我找到了解决方案。它可以帮助人们: 问题:在Windows Vista上运行驱动程序时,DbgPrint或KdPrint消息不会出现在WinDbg(或KD)中 原因是什么?Vist

在调试windows 7检查版dvd x86 398742时,我没有得到任何调试信息。 我甚至看不到我自己的跟踪信息(ATLTRACE)。 与之相反,WindowsXP的工作方式就像一个魔咒。 从Windows7开始调试会话时,我收到“Bad QueryIdType:5”消息。 显然,内核调试设置正确。 请帮助…

好的,我找到了解决方案。它可以帮助人们:

问题:在Windows Vista上运行驱动程序时,DbgPrint或KdPrint消息不会出现在WinDbg(或KD)中

原因是什么?Vista会自动将DbgPrint和朋友映射到DbgPrintEx。现在,您可能还记得DbgPrintEx允许您通过函数调用中的组件名称和级别以及注册表或内存中的关联过滤器掩码过滤消息,从而控制将消息发送到内核调试器的条件

在Vista中,DbgPrint和KdPrint映射到组件“DPFLTR_DEFAULT_ID”和级别“DPFLTR_INFO_level”。当然,在Vista中,默认情况下禁用xxx_INFO_级别的输出。因此,默认情况下,DbgPrint/KdPrint不会被发送到内核调试器

如何修复它?两种选择:

  • 默认情况下启用DbgPrint/KdPrint消息的输出--打开键
    HKLM\SYSTEM\CurrentControlSet\Session Manager\Debug Print Filter
    。在此键下,创建一个名为
    DEFAULT
    的值,将此键的值设置为等于DWORD值8,以启用xxx\u信息级输出以及
    xxx\u错误级
    输出。或者尝试将掩码设置为0xF,以便获得所有输出。要使这些更改生效,必须重新启动

  • 专门为
    DPFLTR
    更换部件滤清器杆。在Vista/LH的早期版本中,您通过在
    Kd\u DPFLTR\u mask
    处为DWORD指定掩码值(“ed Kd\u DPFLTR\u mask”)更改了默认打印输出掩码。在build 5308(Vista的2月份CTP)中,掩码变量似乎已更改,您需要将DWORD的掩码值设置为
    Kd_DEFAULT_mask
    (“ed Kd_DEFAULT_mask”)。在任何一种情况下,指定8以启用除
    DPFLTR\u ERROR\u LEVEL
    输出之外的
    DPFLTR\u INFO\u LEVEL
    输出,或指定0xF以获取所有级别的输出

有关DbgPrintEx/KdPrintEx使用的完整详细信息,请参阅WDK文档以读取和筛选调试消息(遵循以下路径:驱动程序开发工具\调试驱动程序的工具\在驱动程序中使用调试代码\调试代码概述)。或参阅Windows文档的调试工具(附录a)在DbgPrintEx上


我能够在windows 7 32位上从windbg中修复它:

ed Kd_DEFAULT_Mask 8
根据msdn文章,您也可以使用注册表,但必须重新启动才能使其生效。在
HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter
下创建一个DWORD项,该项名为
DEFAULT
,值为
8


此处提供最新的microsoft文档:

要启用DbgPrint/KdPrint消息的输出,默认情况下,注册表路径为“HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter” 会话管理器位于控件下方。默认值normaly为0xf。它启用所有消息。 要根据您的需要设置更合适的位掩码,信息位于

如果选择Visual Studio 2015或2017,默认情况下标准配置不会设置此标志。开始使用示例时,不要忘记在调试目标上设置此额外标志

因此,这对我在Windows 10环境中使用Windbg有所帮助

第二个问题是在Windows10上使用devcon,如echo示例中所述

在Bullet“7找到生成的驱动程序文件”中,将所需的驱动程序文件传输到调试目标并使用devcon加载它们。使用Windows 10,您还必须复制目录文件。否则,devcon.exe将按照说明失败。 当然,您还需要安装测试证书。这通常是在使用Visual Studio 2015/2017准备调试环境时完成的。只需与certmgr再次检查即可