Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | | |
Виртуальная машина дает еще преимущество по времени... 31.01.05 15:46 Число просмотров: 2002
Автор: amirul <Serge> Статус: The Elderman
|
> Кстати, при отладке нестабильных драйверов давно пользуюсь > простейшей "уловкой": DriverLoad проверяет uptime системы, > и если меньше минуты то драйвер просто не запускается. Виртуальная машина дает еще преимущество по времени. Восстановление из снепшота уже готовой для тестирования системы - секунд 5, а перезагрузка, запуск и настройка среды - не меньше минуты рутинных действий
|
<programming>
|
Driver вылетает при блокировке компа 28.01.05 22:21
Автор: serge Статус: Незарегистрированный пользователь
|
Писал как-то фиктивный драйвер единственно для доступа к kernel mode функциям. Драйвер, конечно, получился из семейства белки летяги: летал постоянно, естесснно вместе с осью. Недавно нашел время, поохотился на багов, большинство повывел. Но остался один особенно злобный: запускается драйвер, жмется Ctrl+Alt+Del --> Lock Computer --> Винда(WinXP) вылетает в трубу. Кто-нибудь знает, какие PnP пакеты идут при этом (другие просто не обрабатываются)?
Немного offtop: А правда, что дляполноценнойотладки драйвера нужно вовсю иметь два соединенных компьютера, на одном - Debug версия винды, на другом - спецназ debugger.
|
|
Если просто "Lock Computer", то никаких PNP-запросов это не... 31.01.05 00:50
Автор: leo <Леонид Юрьев> Статус: Elderman
|
Если просто "Lock Computer", то никаких PNP-запросов это не порождает. Другое дело "Hibernate" или "Power off". Скорее всего твой драйвер слегка "пакостит" задолго до этого, a при "Lock Computer" видны последствия.
В PNP все достаточно просто кроме полноценного управления питанием для bus-драйверов.
Искать проблему лучше "от печки" - запускаешь "Driver Verifier" (verifier.exe из командной строки), включаешь проверку для своего творения и вперед. Предварительно полезно включить запись "kernel memory dump".
Чтобы не "тонуть", а хотя-бы "плавать" очень советую два раза прочить доки по DDK. Два раза потому что они так написаны - не зная "конца", не возможно полностью понять "начало".
Отлаживать на одном компе IMHO очень не удобно. Когда дело доходит до трудностей SoftIce уже не поможет. Даже "двух-корпусной" комплект не всегда спасает, например если отлаживать что-то зависящее от IPI на SMP (поднять в драйвер IRQ до HIGH_LEVEL :)
Если нет второго компа, то теоретически VirtualPC или VmWare должно спасти (IMHO первое лучше). По-идее можно соединить COM1 с COM2 нуль-модемным кабелем, отдать COM2 виртуальной машине, а на COM1 посадить WinDbg. Это должно работать без проблем, но я просто не пробовал.
Удачи!
|
| |
Замечания по поводу виртуальных машин 31.01.05 12:04
Автор: amirul <Serge> Статус: The Elderman
|
Полностью согласен со всеми замечаниями по сути
> Отлаживать на одном компе IMHO очень не удобно. Когда дело > доходит до трудностей SoftIce уже не поможет. Даже
Смотря какие трудности. SIce - весьма удобная штука и на нем я перелопатил не один драйвер. Но потом перелез на KD/ WinDbg - они гораздо мощнее
> Если нет второго компа, то теоретически VirtualPC или > VmWare должно спасти (IMHO первое лучше). По-идее можно > соединить COM1 с COM2 нуль-модемным кабелем, отдать COM2 > виртуальной машине, а на COM1 посадить WinDbg. Это должно > работать без проблем, но я просто не пробовал.
Не обязательно. И VMware и VirtualPC умеют перенаправлять виртуальный порт в пайп. В то же время и SoftICE и WinDbg поддерживают удаленную отладку через пайп. Именно так я и делаю уже полтора года.
Теперь о самих виртуальных машинах. В VirtualPC радуют diff (или как они там называются) диски. Это когда новый виртуальный диск создается поверх старого и все изменения пишутся туда. Если блок не был изменен - он читается из старого диска, если был изменен - из нового. Кроме того, субъективно в VPC гораздо лучше реализована работа с перенаправлением COM-порта в пайп (WinDbg гораздо шустрее), но совершенно не радует невозможность создания персистентного снапшота, то есть снапшота из которого размораживаться можно больше одного раза. В VMware же есть постоянный снапшот (очень удобная штука для тестирования нестабильных драйверов - вместо постоянной перезагрузки и создания рабочей среды для отладки драйвера достаточно сделать это один раз и заснепшотить уже загруженную машину). А в 5-й версии (которая пока только бета) появилась возможность организовывать снепшоты в виде дерева, да и работа с COM-портом улучшилась
Так что, несмотря на более приятные ощущения от работы с VPC сижу все таки на VMware
|
| | |
Про возможность использовать пайпы я как-то совсем забыл... 31.01.05 15:08
Автор: leo <Леонид Юрьев> Статус: Elderman
|
Про возможность использовать пайпы я как-то совсем забыл. Если бы в VPC/WmWare можно было вставлять невиртуальное "железо", то давно бы пересел :)
Кстати, при отладке нестабильных драйверов давно пользуюсь простейшей "уловкой": DriverLoad проверяет uptime системы, и если меньше минуты то драйвер просто не запускается.
|
| | | |
Виртуальная машина дает еще преимущество по времени... 31.01.05 15:46
Автор: amirul <Serge> Статус: The Elderman
|
> Кстати, при отладке нестабильных драйверов давно пользуюсь > простейшей "уловкой": DriverLoad проверяет uptime системы, > и если меньше минуты то драйвер просто не запускается. Виртуальная машина дает еще преимущество по времени. Восстановление из снепшота уже готовой для тестирования системы - секунд 5, а перезагрузка, запуск и настройка среды - не меньше минуты рутинных действий
|
| | | | |
Конечно... 31.01.05 16:03
Автор: leo <Леонид Юрьев> Статус: Elderman
|
Конечно...
Ну дак я говоря что пересел бы, если в "виртуалку" можно было вставить PCI-карточку с master-dma :)
|
| | | | | |
А ты virtutech simics не смотрел? 07.02.05 11:29
Автор: amirul <Serge> Статус: The Elderman
|
> Конечно... > Ну дак я говоря что пересел бы, если в "виртуалку" можно > было вставить PCI-карточку с master-dma :) ИМХО это именно то, что тебе надо. Полностью детерминистичная машина, может эмулировать кучу процессоров (в смысле моделей процессоров), многопроцессорные машины и прочая. Кроме всего прочего (список эмулируемого железа не маленький) есть SDK с помощью которого можно дописывать свое железо. К достоинством (и одновременно недостаткам для медленных хост-машин) стоит отнести, что это не виртуальная машина, а эмулятор. Следовательно можно ставить произвольное количество точек прерывания на доступ
Полазь по сайту www.virtutech.com (без хттп, чтобы не палить реферер). Если заинтересует версию 1.6.10 (~60 метров) я за полчаса скачал из осла (всего 4 юзера расшарили, зато один из них мгновенно начал аплоадить мне симикс на скорости 30кб/с), а кряк написал сам - обращайся на мыло и приват. Могу также выслать доки от него
|
| | | | | | |
Спасибо, интересная вещь, как-нибудь обязательно гляну... 07.02.05 13:44
Автор: leo <Леонид Юрьев> Статус: Elderman
|
Спасибо, интересная вещь, как-нибудь обязательно гляну (сейчас нет времени).
Но это всё равно мне не подходит. Я имел ввиду, что "настоящую" не-виртуальную, "железную" карточку по-определению в виртуалку не вставить. Делать же мост реальность-виртуальность, или эмулятор карточки - гораздо волокитнее чем отлаживаться "на железе".
|
| | | | | | | |
Хозяин - барин 07.02.05 14:21
Автор: amirul <Serge> Статус: The Elderman
|
> Но это всё равно мне не подходит. Я имел ввиду, что > "настоящую" не-виртуальную, "железную" карточку > по-определению в виртуалку не вставить. Делать же мост > реальность-виртуальность, или эмулятор карточки - гораздо > волокитнее чем отлаживаться "на железе". Хотя как по мне, именно ОТЛАЖИВАТЬ (когда драйвер не просто неправильно работает, но валится при каждом удобном случае) лучше в виртуальной машине. По аналогии с mock object-ами сделать mock девайс, написать хотя бы десяток тестов и заставить их работать в этой среде. И только после более-менее приемлимой стабилизации переходить на реальное железо (собственно так и делаю - никогда не выпускаю драйвер в продакшн, пока не потещу на реальной машине, даже если он безукоризненно работает в виртуальной)
|
|
Идем на http://google.com и вводим 30.01.05 22:31
Автор: Фдеук Статус: Незарегистрированный пользователь
|
> Писал как-то фиктивный драйвер единственно для доступа к > kernel mode функциям. Драйвер, конечно, получился из > семейства белки летяги: летал постоянно, естесснно вместе с > осью. Недавно нашел время, поохотился на багов, большинство > повывел. Но остался один особенно злобный: запускается > драйвер, жмется Ctrl+Alt+Del --> Lock Computer --> > Винда(WinXP) вылетает в трубу. Кто-нибудь знает, какие PnP > пакеты идут при этом (другие просто не обрабатываются)? > > Немного offtop: А правда, что дляполноценнойотладки > драйвера нужно вовсю иметь два соединенных компьютера, на > одном - Debug версия винды, на другом - спецназ debugger.
Идем на http://google.com и вводим
IRP_MJ_PNP
Попадаем на страничку MSDN'а. Там внизу есть ссылка на
Plug and Play Minor IRPs.
Смотрим колонку
Function or Filter Driver for Nonbus Device
Еще можешь глянуть на устройство драйвера в
http://alter.org.ua/soft/win/ntpcidump/index.php
там есть простенький драйвер, который вполне прилично ведет себя под XP,
хотя о PNP ничего не знает. Зато у него корректный Unload().
Как уже правильно заметили - SoftIce справляется с задачей debugging'а и на одной машине.
--
Alter, http://alter.org.ua
|
|
Про PnP ничего не скажу - не знаю. А то что драйвер летит -... 28.01.05 23:25
Автор: NKritsky <Nickolay A. Kritsky> Статус: Elderman
|
Про PnP ничего не скажу - не знаю. А то что драйвер летит - так отладь его. СофтАйс нормально с драйверами работает.
> Немного offtop: А правда, что дляполноценнойотладки > драйвера нужно вовсю иметь два соединенных компьютера, на > одном - Debug версия винды, на другом - спецназ debugger.
ИМХО айса вполне достаточно.
|
|
Юзай DbgPrint и читай их прогой DbgView -... 28.01.05 22:57
Автор: ih8u <i hate you> Статус: Member
|
> Немного offtop: А правда, что дляполноценнойотладки > драйвера нужно вовсю иметь два соединенных компьютера, на > одном - Debug версия винды, на другом - спецназ debugger.
Юзай DbgPrint и читай их прогой DbgView - http://www.sysinternals.com
Самый простой вариант!!
Или ты хочешь полноценную отладку с пошаговой трассировкой? Помоему это не реально :-\
|
|
|