如何在 WinDBg 中启用内核跟踪

Posted

技术标签:

【中文标题】如何在 WinDBg 中启用内核跟踪【英文标题】:How to enable Kernel Traces in WinDBg 【发布时间】:2014-11-15 18:51:07 【问题描述】:

我已经提到了这个post:

但没有帮助。 发行

ed Kd_DEFAULT_Mask 8

没有引起任何变化。而且我不知道如何在此处添加 DWORD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter 调用 DEFAULT,值为 8,因为我在注册表下看不到 Debug Print Filter

我有办法验证是否安装了我的硬件的调试驱动程序,但即使在验证之后,我似乎也无法在 windbg 中获取内核跟踪。 有一个工具叫 DbgView.exe 我启用了以下捕获选项:

Capture Win32
Capture Global Win32
Capture Kernel
Enable Verbose Kernel Output
Pass-through
Capture events

我希望这将启用内核跟踪但没有帮助。

有人能告诉我这样做的标准方法吗?

【问题讨论】:

【参考方案1】:

如何添加调试打印键注册表

:>reg 查询“HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter”

错误:系统找不到指定的注册表项或值

:>reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter" /V DEFAULT /t REG_DWORD /d 0xf

操作成功完成

:>reg 查询“HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter”

! REG.EXE 3.0版

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug 打印过滤器 默认 REG_DWORD 0xf

【讨论】:

我什至不知道您可以从 cmd 行中执行“reg add”,非常方便! 这是“调试打印过滤器”,而不是“调试打印”【参考方案2】:

您是否尝试将默认掩码设置为 0xF?在您更改 kd_default_mask 变量后,您确定您的驱动程序实际上正在生成跟踪消息吗?

就基于注册表的方法而言,您只需创建调试打印过滤器键(如果它不存在)。

【讨论】:

【参考方案3】:

您需要创建此密钥。该键默认不存在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug 打印过滤器 将默认值设置为 0xf。这将启用所有消息。

更多信息可以在“设置组件过滤器掩码”中找到 https://docs.microsoft.com/de-de/windows-hardware/drivers/devtest/reading-and-filtering-debugging-messages#identifying-the-component-name

还有一个说明如何为单个调试器会话设置此项

【讨论】:

以上是关于如何在 WinDBg 中启用内核跟踪的主要内容,如果未能解决你的问题,请参考以下文章

如何使用WinDBG跟踪调试ASL/ACPI

如何使用 Windbg 从程序开始进行调试?

Windbg 堆栈跟踪问题

windbg 如何再内核模式调试用户空间的程序

如何在没有添加的情况下在 Heroku 中启用堆栈跟踪

如何在 Visual Studio 2017 中启用 TFS 跟踪