Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 如何查看内核模式驱动程序的DbgPrint输出?_Debugging_Windows Xp_Driver_Kernel - Fatal编程技术网

Debugging 如何查看内核模式驱动程序的DbgPrint输出?

Debugging 如何查看内核模式驱动程序的DbgPrint输出?,debugging,windows-xp,driver,kernel,Debugging,Windows Xp,Driver,Kernel,我发现很难看到我正在使用的内核模式驱动程序的调试输出 我对驱动程序开发还不熟悉。我正在尝试调试Windows XP上的USB驱动程序。我已经安装了DDK,并构建了我的驱动程序的“检查模式”版本。我已经安装了驱动程序,如果在windows/drivers中使用十六进制编辑器查看驱动程序的.sys文件,我可以看到调试输出字符串的文本 如果我在Visual Studio下运行使用我的驱动程序的应用程序,我的调试输出不会像应用程序自己的调试输出那样显示在输出窗口中。在搜索web时,我发现关于如何显示内核

我发现很难看到我正在使用的内核模式驱动程序的调试输出

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

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

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


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

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

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

两个链接


调试视图将显示来自驱动程序的跟踪消息:


然而,您确实需要一个两台机器的设置来完成任何真正的开发工作。

谢谢。成功了。我认为DbgView只能显示与Visual Studio在其输出窗口中显示的相同的调试流,但事实并非如此。顺便说一句,启动Windows时也不需要启用“/debug”即可。感谢您抽出时间回答我的问题。我认为你的回答有点误导,因为我可以在没有两台机器的情况下做我想做的事情。但是,我同意,如果您想使用断点等进行完全调试,则需要两台计算机。