Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Подключение WinDbg к удалённому хосту
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Программирование
spbroma
Здравствуйте,

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

Вот я из студии развернул драйвер на тестовой машине, т.е. компьютеры общаются и хорошо друг друга понимают. Теперь запускаю Windbg, ввожу порт, ключ (у меня они общаются по ethernet) и...
Код
Using NET for debugging
Opened WinSock 2.0
Waiting to reconnect...


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

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

Была ли у кого-нибудь подобная проблема и в чем вообще тут может быть дело?
SM
Цитата(spbroma @ Jan 13 2015, 17:38) *
Была ли у кого-нибудь подобная проблема и в чем вообще тут может быть дело?


Подобной проблемы не было. Однако, могу сказать, как я подключаюсь, со 100%-ной повторяемостью
Использую COM-порт, либо IEEE-1394. На удаленной машине запускаю Windbg, там File->Kernel Debug... ну и OK.
Затем перегружаю отлаживаемый комп, и именно в процессе перезагрузки происходит соединение этой машины с отладчиком - в отладчике вижу весь вывод всего того, что выводят части ядра и прочие дрова.
После этого делаю что угодно с драйверами на отлаживаемой машине, разрешаю, запрещаю, ставлю, сношу, и все это происходит под контролем отладчика, который подсоединен к ядру отлаживаемой машины с момента ее загрузки и до победного конца.
spbroma
Попробовал и заметил вот что:

Если на тестовом компьютере выполнить
Код
bcdedit -debug on

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

SM
Цитата(spbroma @ Jan 13 2015, 18:29) *
и перезагрузить, то отладчик подключится, а устройство также пропадёт.


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

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

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

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

UPD:
Когда соединение происходит, а устройство, соответственно, не цепляется -- драйвер, естественно, не устанавливается
Когда устройство находится в системе, к системе не получается подключиться отладчиком.
SM
Цитата(spbroma @ Jan 14 2015, 11:56) *
Включаю-выключаю его, диспетчер устройств молчит, в консоли отладчика тишина.

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

Хотите сказать, что в диспетчере устройств его при этом ни в каком виде нет? А драйвер-визард что говорит? Видит его?
spbroma
Цитата(SM @ Jan 14 2015, 13:45) *
Если я правильно помню, у Вас же PCIe устройство. Как его можно включать-выключать во время работы винды? Оно должно быть включено во время инициализации BIOS, так как именно BIOS его инициализирует, а Windows потом только обнаруживает.

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


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

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

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

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


SM
Цитата(spbroma @ Jan 14 2015, 14:40) *
А о каком драйвер-визарде вы говорите?

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

Цитата(spbroma @ Jan 14 2015, 14:40) *
Кстати, если в inf-е прописать id оборудования как Root\Test,

А зачем это надо? Я сразу прописываю VID/PID, как положено.
spbroma
Цитата
Хотите сказать, что в диспетчере устройств его при этом ни в каком виде нет? А драйвер-визард что говорит? Видит его?

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


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

Да я тоже, это в рамках поиска и проб.
SM
Цитата(spbroma @ Jan 14 2015, 15:33) *
Да, если нет в диспетчере устройств, виндрайвер тоже не видит.

А биос-то видит? В списке устройств, который "пролетает" в процессе загрузки?
Если его никто не видит, то это проблема железки. И вообще, это очень похоже на проблему железки. И смените ее тип, тоже мне, контроллер памяти. Возможно, БИОС его замапливает куда-то в общую память компа.
spbroma
Цитата(SM @ Jan 14 2015, 15:37) *
А биос-то видит? В списке устройств, который "пролетает" в процессе загрузки?

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

Цитата(SM @ Jan 14 2015, 15:37) *
И смените ее тип, тоже мне, контроллер памяти. Возможно, БИОС его замапливает куда-то в общую память компа.

Хм. Сейчас попробую сконфигурить его как мультимедийное устройство. Просто "контроллер памяти" предлагался коркой по умолчанию и я решил не трогать это.
SM
Цитата(spbroma @ Jan 14 2015, 15:46) *
Есть ли более гуманные методы?

Я ничего лучше не придумал, чем его сфоткать sm.gif sm.gif
spbroma
Изменил тип на мультимедийное устройство, пока что ведет себя так же: устройство определяется, драйвер устанавливается, отладчик не подключается
SM
Цитата(spbroma @ Jan 14 2015, 17:26) *
Изменил тип на мультимедийное устройство, пока что ведет себя так же: устройство определяется, драйвер устанавливается, отладчик не подключается

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

0. Тестовый компьютер выключен. Рабочий пытается подключиться отладчиком.
1. Включение тестового компьютера.
2. На каком-то этапе отладчик подключается.
3. После того как устройство инициализировано в системе, можно запускать установку драйвера.
SM
Так точно. По крайней мере, у меня именно так получилось.
А если надо отладчиком в драйвере остановиться, то ф-ция VOID DbgBreakPoint(void); в помощь.
spbroma
Похоже, действительно, проблема в конфигурации PCI на плате.
Если она выключена, отладчик прекрасно цепляется к ядру, даже после перезагрузок и проч.
Стоит загрузиться с включенной платой, отладчик не цепляется. Выключаем комп, отключаем плату, загружаемся - отладчик снова в деле.

При этом устройство без установленного драйвера, определяется просто как "такое-то устройство без драйвера".
Однако драйвер на него ставится без проблем.

Бррр...
SM
Ну лечите железо... Это что-то в нем.
spbroma
Хотя в то же время в незапамятные времена я пробовал установить какой-то базовый драйвер виндрайвера, которые он автоматически сгенерил, для общения с устройством, как с контроллером памяти, и он прекрасно записывал-читал данные с платы.
SM
Цитата(spbroma @ Jan 15 2015, 14:20) *
Хотя в то же время в незапамятные времена я пробовал установить какой-то базовый драйвер виндрайвера

Причем тут драйвер? Если видна устройства вообще не видит под отладчиком? Это говорит, что что-то не так с устройством.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.