информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеСтрашный баг в WindowsАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Ядро Linux избавляется от российских... 
 20 лет Ubuntu 
 Tailscale окончательно забанила... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Виртуальная машина дает еще преимущество по времени... 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
Самый простой вариант!!
Или ты хочешь полноценную отладку с пошаговой трассировкой? Помоему это не реально :-\
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach