【发布时间】:2015-07-10 21:48:01
【问题描述】:
我目前在我的 Windows 8.1 x64 主机上对 Windows 7 x64 目标进行内核调试时遇到了一些问题。我在我的主机上运行带有 WDK 8.1 的 Visual Studio 2013,并且已经配置了在 VMWare 中运行的目标机器。
这是我对目标机器的配置。它是通过主要从这里读取配置的 - http://www.codeproject.com/Tips/545835/Kernel-Mode-Debugging-in-a-VM-using-Visual-Studio:
- Windows 7 x64
- 带有名称为 \\.\pipe\com2 的 VMWare 的串行端口 COM2。检查 VMWare 中的所有正确选项
- 通过 msconfig 启用 OS 的调试标志。调试端口是 COM2,以 115200 波特运行。
- 在配置计算机之前,我在计算机上运行了测试目标客户端“WDK Test Target Setup x64-x64_en-us.exe”
我能够正确配置计算机 - 它创建了 WDK 删除用户帐户。但是,我在实际调试时遇到了一些问题。以下是步骤
- 在 VMWare 中启动 Windows 7 x64 目标映像并等待启动菜单
- 在 Visual Studio(主机)中,进入调试 -> 附加到进程 -> 选择我的计算机 -> 选择进程“内核” -> 附加
- 在 VMWare 中,按 Enter 键启动 Windows
- 这需要一段时间,但在我的主机上,Visual Studio 最终会连接。我可以选择“Break All”并实际使用调试器。
但是,如果我在启动内核之前不这样做,我似乎无法连接到调试器。而且我只能附上一次。例如,我不能让 Windows 初始化到桌面,然后构建我的驱动程序并开始调试。调试器将始终挂在“等待重新连接...”。如果我开始调试内核初始化,决定停止调试,然后尝试重新连接或重新连接,情况也是如此;它也会无限期地挂在“等待重新连接...”。
【问题讨论】:
-
你好@xtef_ 你解决了吗?我有类似的问题
-
这不是只能在启动过程中连接内核的正常行为吗?
-
@WouterHuysentruit 我不太确定这是否是正常行为;我在网上阅读了相互矛盾的信息。如果这是正常行为,那么这意味着我只能在需要重新启动机器之前调试我的驱动程序一次?因为目前就是这样。在尝试使用 VS 2013 和 WDK 之前,我使用了 VisualDDK visualddk.sysprogs.org,并且能够根据需要多次加载/卸载和调试我的驱动程序。目前我可以在启动时附加一次,然后在重新启动之前永远不会重新附加。
-
不,你在启动过程中连接内核调试器(否则你会一直盯着“等待重新连接...”),稍后你可以停止驱动程序,更新它并启动它,而调试器继续运行。请注意,我一直使用 WinDbg 进行调试。
-
就个人而言,除非您有充分的理由需要虚拟机,即您的驱动程序与虚拟机开发相关,否则我只会购买第二台机器并通过以太网连接,这比 COM/ 可靠得多火线。还有这个:virtualkd.sysprogs.org