Привет, стоит задача отлаживать кернел код на ноуте, но! К сожалению на ноуте нет Com и firewire. Есть только usb. Что если приобресть usb-firewire и попробовать пристыковаться через это устройство. Сведения к размышлению: Устройство usb-com на ноуте хоть и установлено, WinDbg не видит его. У кого-нибудь есть опыт в данном вопросе. notebook aspire 1870tz
Какой компьютер у вас целевой? На целевом ПК должен быть полноценный COM или FireWire порт. На компьютере с WinDbg можно использовать и переходники USB-FireWire, USB-COM На целевом компьютере отладка через USB появилась только начиная с Виндовс Виста, и не на всех контроллерах она до сих пор поддерживается. Я сам вот в данный конкретный момент пользуюсь платой PCMCIA-FireWire на ноуте для отладки. Все работает шустренько!
Целевой компьютер notebook aspire 1870tz Ось: Win 7 pro Значит, через юсб можно дебажить? Так кабель юсб нужен специальный. Выхода PCMCIA нет у меня на целевом, только usb. Что если использовать на целевом usb-firewire?
А вообще наверное, лучше всего разобраться с механизмом дебаженья на целевом. Ведь суть в чем? В том, что WinDbg использует по факту драйвер Com на целевом компьютере, а это означает, что на целевом компе за дело берется далее драйвер ком или firewire порта. На Целевом есть юсб И в принципе usb-com плата на целевом работает, т.е. драйвер com на нем имеется, значит нужно заставить этот usb-com драйвер работать так же как и простой сом драйвер. В общем самое важное это понять как работает драйвер com c ядром на целевой машине, и отсюда уже плясать. Может быть нужно будет написать простой драйвер, который расширит возможности usb-com драйвера, который не работает на целевой машине. Отсюда вытекающий вопрос: Как работает механизм драйвера сом на целевом компьютере, который позволяет дебажить целевой комп постредством нуль-модемного сом кабеля? То есть, если разобраться с проблемой на этом уровне, то вопрос будет решен принципиально, возможно нужно будет только написать драйвера заглушки для каждого случая. Схему приложил
Что-то я вашего ноута не нашел в интернете. Вы уверены что у вас именно эта модель? Это что, нетбук, что там нет PCMCIA? А PCIEx там есть? да нужен специальный кабель с адаптером USB типа такого http://www.semiconductorstore.com/cart/pc/viewPrd.asp?idproduct=12083 - цена 89 баксов (без учета шиппинга еще баксов 20) Основная трабла с USB дебаггингом - USB контроллер должен поддерживать такой дебаггинг + дебажить можно только на 1 порте контроллера! Вы уверены что у вас распаян именно дебажный порт? на целевом компьютере драйвера портов вообще не участвуют - портами напрямую управляет само ядро, точнее его часть которая называется Kernel debugger. Драйвера переходников здесь не используются. Иначе как вы себе представляете отладку одних драйверов с работающими другими драйверами?
Момент. Чисто пока теоретически: 1) WinDbg посылает команду. Это команда уходит локальному драйверу com порта. Наверняка это команда упаковывается в некий вид пакета, по определенному протоколу. 2) Далее команда\пакет покидает локальный комп и уходит по com кабелю на целевой комп. 3)Пакет приходит на железку сом порта целевого компьютера. Здесь интересно уже. Каждой железякой управляет некий вид драйвера, или некий модуль ядра. Возможно в нашем случае это модуль ядра. Вопрос в студию, что это за модуль, и что происходит с командой, когда она попадает на com порт целевого компьютера? Значит этот модуль называется Kernel Debugger. Смею предположить, что у kernel debuggera наверняка, есть некая функция и скорее всего она одна, которая принимает команду в виде аргумента. Однако, чтобы попасть в kernel debugger, эту функцию кто-то должен вызвать. И скорее всего это некий модуль, по сути драйвер, который слушает сом железку. И у меня подозрение, что на этот модуль не установить точку останова, поскольку, остановиться работа этого модуля, а как раз он отвечает за обмен информацией с WinDbg. Т,е. если мы этот модуль остановим, то соответсвтвенно он перестанет реагировать на команды, поскольку в нем самом установлена точка останова. Однако из этой ситуации, опять чисто теоретически есть выход. Устанавливаем SoftIce, и дебажим целевой комп, с помощью WinDbg, но котроллируем модуль kernel debugger из SoftIce. А поскольку на win 7 SoftIce не поставить, то можно это сделать пока в XP в вируальной машине.
Я пробовал вешать мой usb-com девайс на разные юсб порты(у меня их 3) и без результатно. Настраивал по-моему bcdedit om
Эта функция очень урезанная и понимает только реальные COM порты, а не переходники USB-COM, увы. Нет, вы конечно можете ее выловить и улучшить, но вы же хотите отлаживать ваше ПО, а не отладчик? Я имел ввиду что на 1 порте получится дебажить с тем адаптером, ссылку на который я привел. Есть еще не распаянные порты. Судя по мануалу на вашем ноуте возможно есть либо MiniDV (FireWire) либо ExpressCard (PCIex).
PS. внутри у него точно есть PCIEx слот http://forum.notebookreview.com/acer/399929-how-add-bluetooth-your-timeline-3810t-other-interesting-tidbits-machine.html я б рискнул =)
Кстати есть идея, как определить какой модуль работает на целевой машине! 1) Устанавливаем на целевую машину SoftIce, например в виртуалку. 2) Цепляемся к виртуалке WinDbg. 3) Запускаем SoftIce на целевой машинке. 4) Отстанавливаем с помощью WinDbg целевую машину 5) Вызываем SoftIce несколько раз, смотрим в каком модуле находимся. Этот модуль и будет kernel debuger, который слушает сом порт. Так как даже если мы остановили с помощью WinDbg целевую машину, это не значит, что она полностью остановлена, kernel debugger то работает. Если же мы останавливаем с помощью SoftIce, то уже ничего не работает на целевой машине, кроме конечно SoftIce
Попробовал. В такой ситуации, если делается останов в WinDbg, то в виртуальной машине всплывает SoftIce. В том же месте на которое указывает Windbg. В WinDbg ничего не происходит Код (Text): nt!DbgBreakPointWithStatus+0x4: 804e3b25 cc int 3
тогда останавливаемся в WinDbg, но при таком сценарии войти в SoftIce уже не получается. Стоит начать наверное новый топик. http://wasm.ru/forum/viewtopic.php?pid=421314#p421314