Подтвердить что ты не робот

WinDbg теряет связь отладки по сети, а конечная остановка машины

Я пытаюсь заставить WinDbg отлаживать работу в сети, но он всегда теряет связи после того, как я ворвался в отладчик (Debug- > Break), а затем попытаюсь запустить его снова (Debug- > Go). Однако, если я никогда не врывался в отладчик, похоже, что соединение стабильно для периода времени "N". Я даже могу видеть отладочные заявления печати в WinDbg, поскольку я использую целевую систему в течение этого льготного периода. Более того, похоже, что соединение хорошо во время отладки, потому что я могу собирать информацию из целевой системы. Я использую "! Ustr srv! SrvComputerName" для получения имени целевого компьютера и возвращает правильное имя. Любая помощь будет высоко оценена.

Настройка систем: Я выполнил инструкции веб-сайт MSDN для настройки моей целевой и хост-систем.

Отладка: Ниже приводятся мои попытки решить эту проблему.

  • Отключение управления потоком и использование полудуплексного режима на сетевом адаптере. Я пробовал это после прочтения этого сообщения: WinDbg, хост-компьютер потерял сеть, если тестовый компьютер находится на одном и том же коммутаторе
  • Покупка новых сетевых адаптеров. Согласно этой веб-странице, мой сетевой адаптер должен поддерживать отладку сетевого ядра. Однако дальнейшее исследование показывает, что у продавцов есть плохая привычка не обновлять идентификаторы своих устройств, поэтому я решил исключить эту возможность, покупая новые адаптеры от разных поставщиков.
  • Изменение сетевого порта. Я попробовал руку, полную различных сетевых портов (49152-65535), на случай, если один из них используется для другой цели.
  • Отсоедините кабель Ethernet, а затем снова подключите его. Как только соединение было потеряно, я попробовал это, надеясь, что он восстановит соединение.
  • Перезагрузка целевой системы. По той же причине, что и # 4.
  • Изменение портов PCIe. У меня заканчиваются варианты.
  • Перемещенная хост-система на другой сетевой коммутатор. Без изменений.

Замечание:

  • Wireshark показывает, что целевая система отправляет пакеты UPD в хост-систему, как только система загружается, но хост-система не отвечает до запуска WinDbg. Более интересно, что целевая система продолжает отправлять пакеты UPD для размещения даже после того, как целевая система перестала отвечать на запросы. К сожалению, я не понимаю данные пакета UPD.
  • WinDbg может последовательно восстанавливать соединение с целевой системой, если перезагружается. Целевая система, похоже, застряла в отладочном перерыве.

Информация о системе: В хост-системе работает Windows 8.1 Pro. Целевая система работает под управлением Windows 8.1 Enterprise Evaluation (8 ГБ ОЗУ).

Распечатка 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 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 перестает реагировать и продолжает отправлять пакеты данных. Целевая система также не реагирует.

4b9b3361

Ответ 1

Я, наконец, решил эту проблему, переключив хост-систему. В начале я думал, что целевой системой была проблема, потому что MSDN только поместил требование отладки NIC в целевую систему. Похоже, что могут быть и требования к хост-системе.

Новая хост-система: Рабочий стол (идентичный целевой системе)

  • ОС: Windows 8.1 Оценка предприятия x64
  • NIC: VEN_10EC & DEV_8168

Предыдущая хост-система: Ноутбук

  • ОС: Windows 8.1 Pro x64
  • NIC: VEN_8086 & DEV_1502

ПРИМЕЧАНИЕ. Я не знаю основную причину. Оба сетевых адаптера находятся в списке Поддерживаемые сетевые адаптеры Ethernet, я использовал ту же версию WinDbg, которая поставляется вместе с WDK, и все системы находятся на одном коммутаторе.

Ответ 2

У меня была аналогичная проблема и она была решена с помощью адаптера USB для Ethernet на главной машине вместо встроенной карты NIC.

Ответ 3

Я также столкнулся с этой проблемой и обнаружил, что когда я пытаюсь принудительно отключить ОС VMWare, соединение windbg кажется восстанавливаемым до того, как ОС VMWare фактически закрыта. После нескольких попыток я нашел странное решение:

Когда соединение windbg между гостевым хостом и гостевым сервером VMWare пропало, попробуйте нажать "shutdown VMWare Guest", но НЕ ПОДВЕРГАЙТЕ. И вы можете обнаружить, что соединение windbg восстанавливается! Затем отмените выключение.

Это очень странно, кажется, что VMWare сам заблокировал сетевое отладочное соединение. Но, по крайней мере, это обходное решение стоит попробовать.

Еще один обходной путь, который я пытался, который иногда работает, убивает windbg в диспетчере задач и повторно запускает windbg и снова подключается к гостевой VMWare. И может потребоваться время ожидания до минут, пока он не восстановится.

btw, моя Ethernet-карта - это Ethernet-соединение Intel I218-V.