3

我已经用 Visual Studio 编写了一个 Windows 驱动程序示例 (WDM),但在尝试调试它时遇到了问题。目标在虚拟机 (VMware) 中运行
我已按照文档 ( http://msdn.microsoft.com/en-us/library/windows/hardware/hh698272(v=vs.85).aspx )配置一切。
它编译正常,但调试时出现问题。

我尝试了各种配置,每个配置都有不同的问题。

Win7(主机)/Win8.1 预览(目标)上的 Visual Studio 2013 预览版 - VMware

调试器似乎无法正常工作。实际上,就像没有加载任何内容一样,模块窗口是空的,当我单击“全部中断”时,什么也没有发生。正如您在日志中看到的,未创建调试器会话。

截图:截屏 日志: http: //pastebin.com/DfVzGR4Z

Win7(主机)/Win8(目标)上的 Visual Studio 2012 - VMware

它在第一次尝试时工作正常,但如果我停止调试器来修改驱动程序,它会冻结 VM。然后我必须重新启动 VM、Visual Studio 并终止进程 ntkd.exe,否则我会遇到以下错误:

  • 未能创建流程实例会阻止调试
  • 无法启动(空),错误 80004005。(未指定的错误)
  • 随后是VS的崩溃(事件名称:CLR20r3)

我已经尝试过从 MSDN 下载的其他示例,但这是同样的问题。

我已经被这些问题困扰了好几个星期,我开始绝望了,所以任何帮助都将不胜感激。我没有尝试过WinDDK,但是由于VS拥有所需的一切,我不明白为什么我不能正常使用它。

4

3 回答 3

0

我建议忘记使用 Visual Studio 进行驱动程序开发/调试,因为在我看来,它不够可靠。

但是针对调试过程,最好先安装VisualDDK,然后启动vmmon/vmmon64。

在已安装的应用程序中,您将找到一个名为“target”的文件夹,其中包含一个名为 DDKLaunchMonitor.exe 的应用程序,将其安装在虚拟机中(它将创建一个启动菜单选项以激活内核调试)

当你想调试你的驱动程序时,启动 vmmon,激活在 vm 启动时启动 windbg 的选项,启动你的 vm,当 Windows 启动时它将加载 windbg 并附加到 vm。

根据需要安装驱动程序并学习windbg。

我知道这个答案并不能解决您使用 VS 的问题,但直接使用 windbg 会更快更好。

于 2013-08-03T20:33:22.637 回答
0

我遇到了类似的问题:Visual Studio 2015 社区版、Windows 10 主机、Windows 10 目标、仅主机网络的 VirtualBox。

配置和远程驱动程序部署工作,但调试器无法连接。

编辑:在 VS2015 配置的最后一步中,Host IP可以选择。下面的手动方法是一种替代方法。

内核模式调试的手动设置指南说要运行以下内容:

bcdedit /debug on
bcdedit /dbgsettings net hostip:w.x.y.z port:n

Visual Studio 在预配过程中自动运行这些。注意hostip参数 - 这必须是它用来连接到目标的接口上的连接机器(带有调试器的机器)的地址。如果您有多个网络接口,Visual Studio 可能会错误地设置它。在我的情况下,VirtualBox 仅主机网络创建了额外的网络接口。

如果您还没有在 VS 中预配目标机器。然后运行上面的两个 bcdedit 命令并重新启动目标机器。在此之后,调试器应该正确连接。

于 2016-04-09T18:11:37.757 回答
-1

我遇到了同样的问题。windbg 连接挂起。我发现内核模式调试器设置的配置有问题(Visual Studio 2012 Driver->test->Configuration)。我将端口设置为 com1。实际上,它应该是\.\pipe\com_1。然后它可以工作在你的情况下,可能还有其他配置问题。您可以查看网页http://www.codeproject.com/Tips/545835/Kernel-Mode-Debugging-in-a-VM-using-Visual-Studio上的要点。

于 2016-10-20T02:43:50.343 回答