我正在尝试通过网络调试WinDbg,但是在我进入调试器(Debug-> Break)之后总是失去连接,然后尝试再次启动它(Debug-> Go) 。但是,如果我从不闯入调试器,看起来连接在'N'时间内是稳定的。我甚至可以在WinDbg中看到调试打印语句,因为我在此宽限期内使用目标系统。而且,在调试中断时似乎连接是好的,因为我可以从目标系统收集信息。我使用“!ustr srv!SrvComputerName”来获取目标计算机名称,并返回正确的名称。任何帮助将不胜感激。
设置系统:我按照MSDN website的说明设置目标和主机系统。
调试:以下是我尝试解决此问题。
观察:
系统信息:主机系统正在运行Windows 8.1 Pro。目标系统正在运行Windows 8.1企业评估(8GB RAM)。
WinDbg打印出来
Microsoft (R) Windows Debugger Version 6.3.9600.17237 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Using NET for debugging
Opened WinSock 2.0
Waiting to reconnect...
Connected to target **.**.*.*** on port ***** on local IP **.**.*.***
Connected to Windows 8 9600 x64 target at (Fri Mar 27 18:58:06.217 2015 (UTC - 7:00)), ptr64 TRUE
Kernel Debugger connection established.
************* Symbol Path validation summary **************
Response Time (ms) Location
Deferred srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
Symbol search path is: srv*C:\Symbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 8 Kernel Version 9600 MP (4 procs) Free x64
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 9600.17031.amd64fre.winblue_gdr.140221-1952
Machine Name:
Kernel base = 0xfffff801`00e70000 PsLoadedModuleList = 0xfffff801`0113a2d0
Debug session time: Fri Mar 27 18:58:06.918 2015 (UTC - 7:00)
System Uptime: 0 days 0:47:15.869
Break instruction exception - code 80000003 (first chance)
*******************************************************************************
* *
* You are seeing this message because you pressed either *
* CTRL+C (if you run console kernel debugger) or, *
* CTRL+BREAK (if you run GUI kernel debugger), *
* on your debugger machine's keyboard. *
* *
* THIS IS NOT A BUG OR A SYSTEM CRASH *
* *
* If you did not intend to break into the debugger, press the "g" key, then *
* press the "Enter" key now. This message might immediately reappear. If it *
* does, press "g" and "Enter" again. *
* *
*******************************************************************************
nt!DbgBreakPointWithStatus:
fffff801`00fcab90 cc int 3
0: kd> g
... Retry sending the same data packet for 64 times.
The transport connection between host kernel debugger and target Windows seems lost.
please try resync with target, recycle the host debugger, or reboot the target Windows.
... Retry sending the same data packet for 128 times.
... Retry sending the same data packet for 192 times.
此时WinDbg不再响应,并继续发送数据包。目标系统也没有响应。
答案 0 :(得分:5)
我终于通过切换主机系统解决了这个问题。一开始,我认为目标系统是问题,因为MSDN仅将NIC调试要求放在目标系统上。似乎主机系统可能也有要求。
新主机系统:桌面(与目标系统相同)
以前的主机系统:笔记本电脑
注意:我真的不知道根本原因。两个NIC都在Supported Ethernet NICs列表中,我使用的是WDK附带的相同WinDbg版本,并且所有系统都在同一个交换机上。
答案 1 :(得分:2)
我遇到了类似的问题,并通过主机上的USB转以太网适配器而不是内置的NIC卡解决了这个问题。
答案 2 :(得分:1)
我找到了在VMware中对我有用的更简单的解决方案, 问题出在vmware中-NAT连接超时30秒。 此值是可配置的。 转到编辑->虚拟网络编辑器->更改设置(UAC提示)->在列表中选择NAT-> NAT设置-> UDP超时。 最大值是32767,默认值(对我而言)是30秒。 它完全解决了我的问题。
答案 3 :(得分:0)
我也遇到了这个问题,发现当我尝试强制关闭VMWare OS时,windbg连接似乎在VMWare OS实际关闭之前恢复。经过几次尝试,我找到了一个奇怪的解决方案:
当主机和VMWare客户端之间的windbg连接丢失时,请尝试单击"关闭VMWare Guest",但不要真正确认。你可能会发现windbg连接恢复了!然后,取消关机。
很奇怪,似乎VMWare本身阻止了网络调试连接的丢失。但至少它是一个值得尝试的解决方法。我尝试的另一种解决方法(有时可以工作)是在任务管理器中杀死windbg,然后重新运行windbg并重新连接到VMWare guest虚拟机。并且可能需要等待几秒到几分钟才能重新连接。
顺便说一下,我的以太网卡是Intel以太网连接I218-V。
答案 4 :(得分:0)
问题出在主机上。如果您不想更改主机并继续对其进行调试,则可能要尝试使用串行端口。它提供了更好的性能。查看以下链接,该链接用于通过com端口设置虚拟机的调试: