Jump to content
    

Подключение WinDbg к удалённому хосту

Здравствуйте,

 

Вопрос относительно подключения отладчика к тестовой машине.

 

Вот я из студии развернул драйвер на тестовой машине, т.е. компьютеры общаются и хорошо друг друга понимают. Теперь запускаю Windbg, ввожу порт, ключ (у меня они общаются по ethernet) и...

Using NET for debugging
Opened WinSock 2.0
Waiting to reconnect...

 

Через студию (Driver -> Test -> Configure computers) меняю параметры подключения (порт и/или шину), применяю их на тестовом компьютере, и после некоторых шаманств с этими параметрами отладчик успешно подключается. Однако, на тестовом компьютере из диспетчера пропадает моё устройство. После перезагрузки тестового компьютера устройство появляется, отладчик вновь не может подключиться.

 

Как показало гугление, не я один сталкиваюсь с подобным и каждый находит какое-то свое магическое решение данной проблемы.

 

Была ли у кого-нибудь подобная проблема и в чем вообще тут может быть дело?

Share this post


Link to post
Share on other sites

Была ли у кого-нибудь подобная проблема и в чем вообще тут может быть дело?

 

Подобной проблемы не было. Однако, могу сказать, как я подключаюсь, со 100%-ной повторяемостью

Использую COM-порт, либо IEEE-1394. На удаленной машине запускаю Windbg, там File->Kernel Debug... ну и OK.

Затем перегружаю отлаживаемый комп, и именно в процессе перезагрузки происходит соединение этой машины с отладчиком - в отладчике вижу весь вывод всего того, что выводят части ядра и прочие дрова.

После этого делаю что угодно с драйверами на отлаживаемой машине, разрешаю, запрещаю, ставлю, сношу, и все это происходит под контролем отладчика, который подсоединен к ядру отлаживаемой машины с момента ее загрузки и до победного конца.

Share this post


Link to post
Share on other sites

Попробовал и заметил вот что:

 

Если на тестовом компьютере выполнить

bcdedit -debug on

и перезагрузить, то отладчик подключится, а устройство также пропадёт.

После очередной перезагрузки устройство появляется, а подключение не выполняется.

 

 

Share this post


Link to post
Share on other sites

и перезагрузить, то отладчик подключится, а устройство также пропадёт.

 

Так, не отключая отладчика, поставьте/подключите свое устройство. Оно и появится. Для этого перезагрузка не нужна, оно же PnP.

 

А чтобы при следующей перезагрузке коннект опять был, надо в отладчике отключиться, затем перегрузить отлаживаемую, и пока комп всякие там биосы проходит, в отладчике инициировать ожидание подключения (опять, File->Kernel Debug, OK). Или, прижать его резетом на это время, если не успеваете.

Share this post


Link to post
Share on other sites

В том-то и странность.

Когда соединение устанавливается, устройство не определяется в системе :) (неужто это клятый kmdf)

Включаю-выключаю его, диспетчер устройств молчит, в консоли отладчика тишина.

 

Стоит перезагрузиться так, чтобы соединение пропало, устройство благополучно подключается и инициализируется.

 

Не уверен насчёт причинно-следственной связью между соединением и инициализацией. Но корреляция очевидна.

 

UPD:

Когда соединение происходит, а устройство, соответственно, не цепляется -- драйвер, естественно, не устанавливается

Когда устройство находится в системе, к системе не получается подключиться отладчиком.

Edited by spbroma

Share this post


Link to post
Share on other sites

Включаю-выключаю его, диспетчер устройств молчит, в консоли отладчика тишина.

Если я правильно помню, у Вас же PCIe устройство. Как его можно включать-выключать во время работы винды? Оно должно быть включено во время инициализации BIOS, так как именно BIOS его инициализирует, а Windows потом только обнаруживает.

 

Хотите сказать, что в диспетчере устройств его при этом ни в каком виде нет? А драйвер-визард что говорит? Видит его?

Share this post


Link to post
Share on other sites

Если я правильно помню, у Вас же PCIe устройство. Как его можно включать-выключать во время работы винды? Оно должно быть включено во время инициализации BIOS, так как именно BIOS его инициализирует, а Windows потом только обнаруживает.

 

Хотите сказать, что в диспетчере устройств его при этом ни в каком виде нет? А драйвер-визард что говорит? Видит его?

 

Я сам удивился этому,но при включении устройства при запущенной винде она прекрасно его находит и при обновлении устройств в диспетчере задач появляется либо как прописано в драйвере, либо как неизвестное устройство - PCI-контроллер памяти, как и указано в корке на ПЛИС. Но не всегда. Иногда не появляется даже если включено до запуска винды. (И именно тогда срабатывает подключение отладчика к тестовому компу)

 

Да, выглядит как-то бредово :)

 

А о каком драйвер-визарде вы говорите?

 

Кстати, если в inf-е прописать id оборудования как Root\Test, то наличие/отсутствие соединения всё равно каким-то образом связано с тем, определяется устройство на тестовом компьютере (в данном случае как раз как неопознанный контроллер памяти) или нет.

 

 

 

Share this post


Link to post
Share on other sites

А о каком драйвер-визарде вы говорите?

О Jungo - им удобно смотреть по ходу событий, что там в девайсе, есть ли он в системе, и что в его регистрах.

 

Кстати, если в inf-е прописать id оборудования как Root\Test,

А зачем это надо? Я сразу прописываю VID/PID, как положено.

Share this post


Link to post
Share on other sites

Хотите сказать, что в диспетчере устройств его при этом ни в каком виде нет? А драйвер-визард что говорит? Видит его?

Да, если нет в диспетчере устройств, виндрайвер тоже не видит.

 

 

А зачем это надо? Я сразу прописываю VID/PID, как положено.

Да я тоже, это в рамках поиска и проб.

Share this post


Link to post
Share on other sites

Да, если нет в диспетчере устройств, виндрайвер тоже не видит.

А биос-то видит? В списке устройств, который "пролетает" в процессе загрузки?

Если его никто не видит, то это проблема железки. И вообще, это очень похоже на проблему железки. И смените ее тип, тоже мне, контроллер памяти. Возможно, БИОС его замапливает куда-то в общую память компа.

Share this post


Link to post
Share on other sites

А биос-то видит? В списке устройств, который "пролетает" в процессе загрузки?

Во время загрузки не успеваю за списком уследить :) Есть ли более гуманные методы?

 

И смените ее тип, тоже мне, контроллер памяти. Возможно, БИОС его замапливает куда-то в общую память компа.

Хм. Сейчас попробую сконфигурить его как мультимедийное устройство. Просто "контроллер памяти" предлагался коркой по умолчанию и я решил не трогать это.

Share this post


Link to post
Share on other sites

Есть ли более гуманные методы?

Я ничего лучше не придумал, чем его сфоткать :) :)

Share this post


Link to post
Share on other sites

Изменил тип на мультимедийное устройство, пока что ведет себя так же: устройство определяется, драйвер устанавливается, отладчик не подключается

 

Share this post


Link to post
Share on other sites

Изменил тип на мультимедийное устройство, пока что ведет себя так же: устройство определяется, драйвер устанавливается, отладчик не подключается

Еще раз. Должно быть все наоборот - сначала подключается отладчик (к ядру), в процессе загрузки, а потом уже определяется устройство и ставится драйвер.

Share this post


Link to post
Share on other sites

То есть, сценарий следующий?

 

0. Тестовый компьютер выключен. Рабочий пытается подключиться отладчиком.

1. Включение тестового компьютера.

2. На каком-то этапе отладчик подключается.

3. После того как устройство инициализировано в системе, можно запускать установку драйвера.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...