WinDbg губи отстраняване на грешки в връзката по мрежата и замръзва целевата машина

Опитвам се да накарам WinDbg отстраняването на грешки по мрежата да работи, но винаги губи връзки, след като пробия в дебъгера (Debug->Break), и след това се опитам да го стартирам отново (Debug->Go). Въпреки това, ако никога не проникна в програмата за отстраняване на грешки, изглежда, че връзката е стабилна за „N“ период от време. Мога дори да видя изрази за печат за отстраняване на грешки в WinDbg, докато използвам целевата система по време на този гратисен период. Освен това изглежда, че връзката е добра, докато сте в прекъсване на отстраняването на грешки, защото мога да събера информация от целевата система. Използвам "!ustr srv!SrvComputerName", за да получа името на целевия компютър и той връща правилното име. Всяка помощ ще бъде много ценена.

Настройване на системите: Следвах инструкциите от уебсайт на MSDN за настройка на моите целеви и хост системи.

Отстраняване на грешки: По-долу са моите опити за разрешаване на този проблем.

  1. Деактивиране на контрола на потока и използване на полудуплексен режим на мрежовия адаптер. Опитах това, след като прочетох тази публикация: WinDbg, хост машината губи мрежа, ако тестовата машина е на същия комутатор
  2. Закупуване на нови мрежови адаптери. Според тази уеб страница, моят мрежов адаптер трябва да поддържа отстраняване на грешки в мрежовото ядро. По-нататъшното разследване обаче показва, че доставчиците имат лошия навик да не актуализират идентификаторите на своите устройства, така че реших да изключа тази възможност, като закупя нови адаптери от различни доставчици.
  3. Промяна на мрежовия порт. Изпробвах цяла ръка с различни мрежови портове (49152-65535) само в случай, че някой от тях се използва за различна цел.
  4. Изключете Ethernet кабела и след това го включете отново. След като връзката беше загубена, опитах това с надеждата, че ще възстанови връзката.
  5. Рестартиране на целевата система. Същата причина като #4.
  6. Промяна на PCIe портове. Свършват ми опциите.
  7. Преместена хост система към друг мрежов комутатор. Няма промяна.

Наблюдение:

  1. Wireshark показва, че целевата система изпраща UPD пакети към хост системата веднага щом системата се зареди, но хост системата не отговаря, докато WinDbg не бъде стартиран. По-интересното е, че целевата система продължава да изпраща UPD пакети към хост дори след като целевата система спре да реагира. За съжаление, не разбирам данните за UPD пакетите.
  2. WinDbg може постоянно да възстановява връзката с целевата система, ако се рестартира. Изглежда, че целевата система е блокирала в прекъсване на отстраняването на грешки.

Информация за системата: Хост системата работи с Windows 8.1 Pro. Целевата система работи с Windows 8.1 Enterprise Evaluation (8 GB 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 вече не реагира и продължава да изпраща пакети с данни. Целевата система също не реагира.


person tchau.dev    schedule 28.03.2015    source източник
comment
Не публикувайте решения във въпроса. Можете да публикувате отговор на въпроса си, ако желаете.   -  person nobody    schedule 01.04.2015
comment
Това ли е протоколът?   -  person tchau.dev    schedule 01.04.2015
comment
Да, така е. stackoverflow.com/help/self-answer   -  person nobody    schedule 01.04.2015


Отговори (5)


Най-накрая реших този проблем, като превключих хост системата. В началото мислех, че целевата система е проблемът, защото MSDN само поставя изискване за отстраняване на грешки в NIC на целевата система. Изглежда, че може да има изисквания, поставени и към хост системата.

Нова хост система: Настолен компютър (идентичен с целевата система)

  • ОС: Windows 8.1 Enterprise Evaluation x64
  • NIC: VEN_10EC&DEV_8168

Предишна хост система: Лаптоп

  • Операционна система: Windows 8.1 Pro x64
  • NIC: VEN_8086&DEV_1502

ЗАБЕЛЕЖКА: Наистина не знам основната причина. И двата NIC са в Поддържани Ethernet NIC използвах същата версия на WinDbg, която дойде с WDK, и всички системи са на един и същи превключвател.

person tchau.dev    schedule 01.04.2015
comment
Абсолютно същото преживяване за мен. Целта ми е Windows 10 x64 с NIC: VEN_8086&DEV_1502. Когато използвах лаптоп Dell като хост с VEN_10EC&DEV_8168, връзката ми щеше да се провали, както е описано в OP. Когато използвах друг компютър като хост с VEN_8086&DEV_100F, тогава връзката работеше добре. Не са необходими промени в целта (освен промяна на настройката на hostip, разбира се). - person Matt M; 05.05.2017

Намерих по-просто решение, което работи за мен във VMware, проблемът е във vmware - NAT връзката има 30 секунди таймаут. Тази стойност може да се конфигурира. Отидете на редактиране -> редактор на виртуална мрежа -> промяна на настройките (uac подкана) -> изберете NAT в списъка -> NAT настройки -> UDP таймаут. Максималната стойност е 32767, по подразбиране (за мен) беше 30 секунди. Напълно реши проблема ми.

person shaked cohen    schedule 14.03.2019

Имах подобен проблем и го реших, като използвах USB към Ethernet адаптер на хост машината вместо вградената NIC карта.

person Girish BR    schedule 09.02.2016
comment
Можете ли да споделите конкретния доставчик и продукта? - person tchau.dev; 09.02.2016

Срещнах също този проблем и открих, че когато се опитам да изключа принудително VMWare OS, връзката windbg изглежда се възстановява, преди VMWare OS действително да бъде затворена. След няколко опита намерих странно решение:

Когато връзката windbg между хоста и госта на VMWare се загуби, опитайте да щракнете върху „изключване на госта на VMWare“, но НЕ потвърждавайте наистина. И може да откриете, че връзката с windbg се възстановява! След това отменете изключването.

Много е странно, изглежда, че самият VMWare блокира изгубената мрежова връзка за отстраняване на грешки. Но поне това е заобиколно решение, което си струва да опитате.

Друго заобиколно решение, което опитах, което понякога работи, е да убия windbg в диспечера на задачите и да стартирам отново windbg и да се свържа отново с VMWare гост. И може да се наложи да изчакате секунди до минути, докато се свърже отново.

между другото, моята Ethernet карта е Intel Ethernet Connection I218-V.

person Ivellios    schedule 15.07.2016

Проблемът е в хоста. Ако не искате да промените хоста си и да продължите да отстранявате грешки на него, можете да опитате да използвате сериен порт. Дава по-добра производителност. Разгледайте следната връзка за настройка на отстраняване на грешки на виртуална машина през com порт:

https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/attaching-to-a-virtual-machine--kernel-mode-?redirectedfrom=MSDN

person Avinash Kumar Ranjan    schedule 04.05.2020