【问题标题】:How do I get to see DbgPrint output from my kernel-mode driver?如何从我的内核模式驱动程序中查看 DbgPrint 输出?
【发布时间】:2012-05-26 03:43:16
【问题描述】:

我发现很难从我正在处理的内核模式驱动程序中看到调试输出。

我是驱动程序开发的新手。我正在尝试在 Windows XP 上调试 USB 驱动程序。我已经安装了 DDK,并为我的驱动程序构建了一个“检查模式”版本。我已经安装了驱动程序,如果我使用十六进制编辑器在 windows/drivers 中查看驱动程序的 .sys 文件,我可以看到调试输出字符串的文本。

如果我在 Visual Studio 下运行使用我的驱动程序的应用程序,我的调试输出不会像应用程序自己的调试输出那样出现在输出窗口中。在网上搜索,我发现许多关于如何显示内核的调试输出的不同说法。对于一般的内核调试,人们似乎要么通过 NULL 调制解调器电缆(Crikey,2012 年)进行远程调试,要么使用虚拟机和虚拟 com 端口。这两种方法似乎都需要大量的工作才能看到调试输出。有其他选择吗?

我尝试在“本地”内核调试模式下使用 WinDbg,但它没有显示任何内容。它警告我应该在启用“/debug”的情况下重新启动窗口。我这样做了,但没有帮助。

还有其他想法吗?还是我在要求不可能的事?

【问题讨论】:

    标签: debugging windows-xp driver kernel


    【解决方案1】:

    DebugView 将显示来自驱动程序的跟踪消息:

    http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

    但是,您确实需要两台机器来完成任何真正的开发工作。

    【讨论】:

    • 谢谢。那行得通。我认为 DbgView 只能显示与 Visual Studio 在其输出窗口中显示的相同的调试流,但事实并非如此。
    • 顺便说一句,也无需启动启用“/debug”的 Windows 即可。
    【解决方案2】:

    您找到的信息是正确的。您确实需要 2 台机器来调试内核模式驱动程序。

    如果您选择使用 2 台物理机,它们可以通过 USB 连接。 NULL 调制解调器(COM 端口)是将调试器连接到虚拟机的常用方法,其中 VM 的 COM 端口被视为主机上的命名管道,因此您实际上不需要 NULL 调制解调器电缆。

    几个链接

    http://msdn.microsoft.com/en-us/library/ff538141.aspx

    http://msdn.microsoft.com/en-us/library/ff542279.aspx

    【讨论】:

    • 感谢您抽出宝贵时间回答我的问题。我认为您的回答有点误导,因为我可以在没有 2 台机器的情况下做我想做的事。但是,我同意如果您想使用断点等进行全面调试,则需要 2 台机器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 2012-04-11
    • 2018-05-07
    • 2015-11-19
    • 2018-07-29
    • 1970-01-01
    • 2018-08-14
    相关资源
    最近更新 更多