2011-01-19 87 views
13

调试en_windows_7_checked_build_dvd_x86_398742时,我没有收到调试信息。 我甚至无法看到我自己的跟踪信息(ATLTRACE)。 相反,Windows XP Checked的作用就像一个魅力。 在Windows 7启动调试会话时出现“Bad QueryIdType:5”msg。 显然,内核调试设置正确。 请帮忙...内核跟踪Windows 7 WinDbg

回答

13

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

问题:在Windows Vista上运行驱动程序时,您的DbgPrint或KdPrint消息不会显示在WinDbg(或KD)中。

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

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

如何解决?有两种选择:

  • 默认启用DbgPrint/KdPrint消息输出--open关键HKLM\SYSTEM\CurrentControlSet\Session Manager\Debug Print Filter。在此项下,创建名称为DEFAULT的值将此项的值设置为等于DWORD值8以启用x​​xx_INFO_LEVEL输出以及xxx_ERROR_LEVEL输出。或者尝试将掩码设置为0xF,以便获得所有输出。您必须重新启动才能使这些更改生效。

  • 具体更改DPFLTR的组件过滤器桅杆。在Vista/LH的早期版本中,通过在Kd_DPFLTR_MASK(“ed Kd_DPFLTR_MASK”)处指定DWORD的掩码值来更改默认打印输出掩码。在内部版本5308(Vista的2月份CTP)中,看起来掩码变量已经改变,您需要设置DWORD的掩码值为Kd_DEFAULT_MASK(“ed Kd_DEFAULT_MASK)。在任一情况下,指定8以启用DPFLTR_INFO_LEVEL输出到DPFLTR_ERROR_LEVEL输出,或0xf添加至获取输出各级

见读取和过滤调试信息WDK文档(按照路径:驱动程序开发工具\调试工具DRIVERS \在驱动程序中使用调试代码\调试代码概述)以获取有关使用DbgPrintEx/KdPrintEx的完整详细信息,或者查看DbgPrintEx上的调试工具Windows文档(附录A)

15

我能够从WinDbg的范围内解决这个问题,在Windows 7 32位:

ed Kd_DEFAULT_Mask 8 

根据MSDN文章,你也可以使用注册表,但你必须重新启动它生效。在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter下创建一个名为DEFAULT的DWORD密钥,其值为8

的最新微软的文档可以在这里找到:http://msdn.microsoft.com/en-us/library/windows/hardware/ff551519(v=vs.85).aspx

1

在默认情况下启用DbgPrint/KdPrint消息输出的注册表路径“HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \控制\会话管理器\调试打印过滤器” 会话管理器在控制之下。默认值通常是0xf。这使所有的消息。 要在您需要设置一个更好的拟合位掩码的信息位于 https://docs.microsoft.com/de-de/windows-hardware/drivers/devtest/reading-and-filtering-debugging-messages#identifying-the-component-name

如果你采取的Visual Studio 2015年或2017年,标准配置默认情况下不会设置该标志。当开始使用示例时,不要忘记在Debug-Target上设置这个额外的内容。

所以这帮助我在Windows 10环境中使用Windbg。

的第二个问题是使用在Windows 10 DEVCON像在回波示例 https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debug-universal-drivers---step-by-step-lab--echo-kernel-mode-#install

在子弹描述“7找到内置驱动程序文件”所需要的驱动程序文件transfering到调试目标并与DEVCON加载它们。使用Windows 10,您还必须复制目录文件。否则,devcon.exe将按照描述失败。 因为您还需要安装测试证书。这通常在使用Visual Studio 2015/2017准备调试环境时完成。请仔细检查certmgr。