Покритикуйте расширение к VStudio, заменяющее WinDbg
От: bazis1 Канада  
Дата: 02.06.09 12:48
Оценка: 159 (22)
Как всегда, "дошли руки" написать расширение к Visual Studio 2005/2008, позволяющее создавать проекты драйверов прямо из IDE, собирать и отлаживать их оттуда же. А заодно, автоматически отправлять файл драйвера на отладочную машину и запускать там заданную команду.
Сайт проекта тут: http://visualddk.sysprogs.org/
Quickstart guide здесь: http://visualddk.sysprogs.org/quickstart

Проект получился достаточно большим, поэтому будут интересны багрепорты и пожелания по части новых фич.

Да, расширение бесплатное и выложено с исходниками.
Re: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: _Nkey_ Беларусь  
Дата: 02.06.09 18:14
Оценка:
Хм.
Рад, что на тебя наткнулся. Накачал с sysprogs всякой штуки — пойду домой буду разбираться.

Приятно, что кто-то просто так что-то делает, и это(то что он делает), очень ничаго.
Re: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: airmaxx http://perfect-coding.blogspot.com
Дата: 02.06.09 19:28
Оценка:
Ух-ты!
Аж руки зачесались попробовать!

З.Ы. Огромне спасибо автору за KDVMWare. Просто незаменимая утилита!
Re: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: _Nkey_ Беларусь  
Дата: 03.06.09 14:57
Оценка:
Очень мило.

По багам:

Расширение не стало на 2008 вижлу (рус. версия) под XP. Точнее стало, но как-то странно. (есть проект драйвера, но нет кнопок для отладки).
Под вистой на стало отлично.
При перезагрузке гостевой системы вижла иногда вылетает.
Не получается соеденится на прямую к KDVMWare(через его пайп работает нормально(в имени машины есть пробелы)).
Если создать проект драйвера с именем начинающимся на цифру — получается некомпилируемый код))))

Скажи, в каком виде присылать баги и откуда и какие брать логи. Скоро буду браться за работу — буду юзать VisualDDK. Тогда соберу более точные данные.

Софтина ужасно хороша, надо бы только сделать все постабильнее.
Re[2]: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: bazis1 Канада  
Дата: 03.06.09 15:24
Оценка:
Здравствуйте, _Nkey_, Вы писали:

_N_>Очень мило.


_N_>По багам:


_N_>Расширение не стало на 2008 вижлу (рус. версия) под XP. Точнее стало, но как-то странно. (есть проект драйвера, но нет кнопок для отладки).

Дело в русской студии. В файле CommandBar.resx в исходниках содержатся имена меню Tools для разных языков, например:
    <data name="enTools">            <value xml:space="preserve">Tools</value></data>

Единственное решение — внести туда названия пунктов меню из русской студии. Так как у меня оной нету, сам сделать не могу. Файл проще всего отредактировать, открыв студийным редактором ресурсов. Обновленный файл шли почтой — включу в следующую версию.

_N_>Под вистой на стало отлично.

_N_>При перезагрузке гостевой системы вижла иногда вылетает.
Попробуй сделать attach к студии из другой студии, и когда первая вылетит, выбери debug->write dump и полученный файл пришли мне. Это позволит

_N_>Не получается соеденится на прямую к KDVMWare(через его пайп работает нормально(в имени машины есть пробелы)).

Видимо, баг с пробелами. Поправлю.

_N_>Если создать проект драйвера с именем начинающимся на цифру — получается некомпилируемый код))))

А если удалить boot.ini — получается неюзабельная система :D
(согласен, мелкий, но недочет)

_N_>Скажи, в каком виде присылать баги и откуда и какие брать логи. Скоро буду браться за работу — буду юзать VisualDDK. Тогда соберу более точные данные.

При вылетании студии создавай debug dump и шли его мне на почту (ivan (гав) sysprogs тчк орг).

_N_>Софтина ужасно хороша, надо бы только сделать все постабильнее.

Ну да. Для этого и нужны багрепорты Было бы очень удивительно, если бы мегабайт плюсплюсного кода работал одинаково хорошо у всех юзеров в первой же версии :P
Re: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: x64 Россия http://x64blog.name
Дата: 03.06.09 15:37
Оценка:
Тема интересная, пара пожеланий только:

1. Плагин не должен зависеть от виртуалки (т.е. должно работать как с VMware, так и с VirtualBox — я использую второе).
2. Плагин не должен требовать установки чего-либо дополнительно, всё должно быть в дистрибутиве, и уж точно не должен мешать самой VS.
3. Первое время (как минимум, несколько месяцев) после выхода стабильной версии не стоит делать его платным. Потом можно, но не слишком дорого.

По фичам не знаю, но хотелось бы, чтобы операция запуска сеанса отладки была максимально простой, буквально чтобы пару кнопок было достаточно нажать. Ну вот рассмотрим пример. Я не использую Visual Studio для сборки драйверов, т.е. у меня нет никакого VS-проекта для этого (и честно говоря, нет никакого желания его создавать). У меня есть файлы sources, makefile и ещё куча исходников типа .h и .c. В идеале, было б здорово, если бы было можно использовать VS по аналогии с WinDbg, т.е. не для сборки, а только и исключительно для отладки: жмёшь какой-нибудь пункт меню, указываешь папку с исходниками (хотя это вроде можно из отладочных символов вытянуть), папку с бинарниками (.sys и .pdb), пишешь имя пайпа, далее кнопка OK и всё — студия переходит в режим отладки и ждёт пайпа. Ну вот как-то так.
JID: x64j@jabber.ru
Re[2]: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: bazis1 Канада  
Дата: 03.06.09 16:46
Оценка:
Здравствуйте, x64, Вы писали:

x64>Тема интересная, пара пожеланий только:


x64>1. Плагин не должен зависеть от виртуалки (т.е. должно работать как с VMware, так и с VirtualBox — я использую второе).

Плагин не зависит от виртуалки. Он работает со всем, с чем работает WinDbg (хоть с реальным COM-портом). Просто для VMWare был написан отдельный драйвер, интеграцию с которым я и добавил.

x64>2. Плагин не должен требовать установки чего-либо дополнительно, всё должно быть в дистрибутиве, и уж точно не должен мешать самой VS.

Не понял. "Дополнительного", это KDVMWARE? Дык это отдельный продукт, работающий в т.ч. с WinDbg. Debugging Tools включать в дистр? Тоже несерьезно. И что сейчас мешает "самой VS"? Я что-то упустил из виду?

x64>3. Первое время (как минимум, несколько месяцев) после выхода стабильной версии не стоит делать его платным. Потом можно, но не слишком дорого.

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

x64>По фичам не знаю, но хотелось бы, чтобы операция запуска сеанса отладки была максимально простой, буквально чтобы пару кнопок было достаточно нажать. Ну вот рассмотрим пример. Я не использую Visual Studio для сборки драйверов, т.е. у меня нет никакого VS-проекта для этого (и честно говоря, нет никакого желания его создавать). У меня есть файлы sources, makefile и ещё куча исходников типа .h и .c. В идеале, было б здорово, если бы было можно использовать VS по аналогии с WinDbg, т.е. не для сборки, а только и исключительно для отладки: жмёшь какой-нибудь пункт меню, указываешь папку с исходниками (хотя это вроде можно из отладочных символов вытянуть), папку с бинарниками (.sys и .pdb), пишешь имя пайпа, далее кнопка OK и всё — студия переходит в режим отладки и ждёт пайпа. Ну вот как-то так.


Такая функция есть — debug->attach->kernel-mode connections. Я, вроде бы, в QuickStart все описал. Кстати, проект можно импортировать из существующих исходников.
Re[3]: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: x64 Россия http://x64blog.name
Дата: 03.06.09 17:01
Оценка:
Мне следовало сразу сказать, вероятно: я ещё не смотрел толком сам проект (нет времени пока), я всего лишь описал как это должно быть по моему мнению. Debugging Tools, разумеется, включать в дистрибутив не следует. И да, я имел виду именно KDVMWARE, — было бы совсем хорошо, если бы в установщике можно было выбирать галочкой ставить его или нет (например, мне оно просто не нужно). Сейчас пока только пожелаю стабильности, а в ближайшее время, возможно, попробую сам, если что найду — отпишусь. Удачи!
JID: x64j@jabber.ru
Re: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: pva  
Дата: 06.06.09 13:20
Оценка:
Здравствуйте, bazis1,

Инсталяция (VisualDDK-1.0-nopdb.exe)
— По умолчанию, таких переменных как DDKPATH | WDKPATH не существует
— В диалоговом окне укажи что путь должен быть корнем DDK | WDK, а в ошибке не только что NTDDK.H не найден, но и что ищется он в (%XXKPATH%\inc\ddk). Это для тех кто QuickStart не читает.
— При выборе каталога через диалог кнопка "Next >" не активируется

Отладка
— Раз уж мы указываем тип драйвера при его создании (WDK | Legacy), то логично было бы выставлять нужные пункты в VisualDDK Driver Project Launcher.
— В этом же диалоге добавить кнопку "Cancel".

Дальше пока не тестировал.
newbie
visualddk msvs extension
Re: VisualDDK 1.1 + KDVMWare 1.3
От: bazis1 Канада  
Дата: 06.06.09 14:03
Оценка:
Спасибо всем высказавшимся за идеи. Выпустил версию 1.1. Поправлены баги с VS2005 и установкой на 64-разрядную Windows. Плюс, пара мелких изменений по UI. Дальнейшие пожелания приветствуются.
Re[2]: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: bazis1 Канада  
Дата: 06.06.09 14:08
Оценка:
Здравствуйте, pva, Вы писали:

pva>Здравствуйте, bazis1,


pva>Инсталяция (VisualDDK-1.0-nopdb.exe)

pva> — По умолчанию, таких переменных как DDKPATH | WDKPATH не существует
По умолчанию — нет. Если была поставлена BazisLib — да.
pva> — В диалоговом окне укажи что путь должен быть корнем DDK | WDK, а в ошибке не только что NTDDK.H не найден, но и что ищется он в (%XXKPATH%\inc\ddk). Это для тех кто QuickStart не читает.
Согласен.
pva> — При выборе каталога через диалог кнопка "Next >" не активируется
Хм. У меня активируется. Можно по пунктам, что где как выбирал?

pva>Отладка

pva> — Раз уж мы указываем тип драйвера при его создании (WDK | Legacy), то логично было бы выставлять нужные пункты в VisualDDK Driver Project Launcher.
Это будет чуть позже, с более продвинутым Launcher-ом.
pva> — В этом же диалоге добавить кнопку "Cancel".
Тоже будет. Пока можно по Alt+F4.

pva>Дальше пока не тестировал.
Re[3]: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: pva  
Дата: 06.06.09 19:18
Оценка:
Здравствуйте, bazis1, Вы писали:

pva>> — При выборе каталога через диалог кнопка "Next >" не активируется

B>Хм. У меня активируется. Можно по пунктам, что где как выбирал?
Сразу после установки появляется этот диалог для выбор XXKPATH. Тыкаешь кнопку справа от EditBox для WDK, выбираешь каталог, ОК. Если потом Ctrl+X, Ctrl+V, то "Next >" станет доступной.

pva>> — В этом же диалоге добавить кнопку "Cancel".

B>Тоже будет. Пока можно по Alt+F4.
Да, это понятно. Можно и мышей на крестик.
newbie
Re: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: Аноним  
Дата: 07.06.09 13:38
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Как всегда, "дошли руки" написать расширение к Visual Studio 2005/2008, позволяющее создавать проекты драйверов прямо из IDE, собирать и отлаживать их оттуда же. А заодно, автоматически отправлять файл драйвера на отладочную машину и запускать там заданную команду.

B>Сайт проекта тут: http://visualddk.sysprogs.org/
B>Quickstart guide здесь: http://visualddk.sysprogs.org/quickstart

B>Проект получился достаточно большим, поэтому будут интересны багрепорты и пожелания по части новых фич.


B>Да, расширение бесплатное и выложено с исходниками.


приятный проект
давненько небыло в интернете хороших проектов
Re[2]: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: Аноним  
Дата: 07.06.09 19:40
Оценка: -3 :)
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, bazis1, Вы писали:


B>>Как всегда, "дошли руки" написать расширение к Visual Studio 2005/2008, позволяющее создавать проекты драйверов прямо из IDE, собирать и отлаживать их оттуда же. А заодно, автоматически отправлять файл драйвера на отладочную машину и запускать там заданную команду.

B>>Сайт проекта тут: http://visualddk.sysprogs.org/
B>>Quickstart guide здесь: http://visualddk.sysprogs.org/quickstart

B>>Проект получился достаточно большим, поэтому будут интересны багрепорты и пожелания по части новых фич.


B>>Да, расширение бесплатное и выложено с исходниками.


А>приятный проект

А>давненько небыло в интернете хороших проектов

поспешил (((
возьму свои слова обратно
как токо увидел внутри файлы .cs сразу стало плохо...
Re[3]: ???
От: bazis1 Канада  
Дата: 08.06.09 07:55
Оценка: +2
Что плохого в User-интерфейсе на C#? Чем он хуже в 3 раза более длинной реализации на C++/WTL? Учитывая, что большинство графических вещей в студии написаны на .NET и подключение окон и панелей через COM будет медленнее за счет маршаллинга? Реально назовите хоть один недостаток, пожалуйста.
Ключевой компонент (DDKDebugger), наиболее критичный к производительности, написан на C++ и узким местом не является (узкое место, как и в случае с WinDbg — в скорости соединения отладчика с отлаживаемой машиной).
Или Вы фанат написания всего на чистом C?
Re[4]: ???
От: x64 Россия http://x64blog.name
Дата: 08.06.09 08:01
Оценка: +1
B>Или Вы фанат написания всего на чистом C?

Не обращай внимания, это очередные дети с васма пришли.
JID: x64j@jabber.ru
Re[3]: Покритикуйте расширение к VStudio, заменяющее WinDbg
От: byleas  
Дата: 08.06.09 08:35
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>как токо увидел внутри файлы .cs сразу стало плохо...

Какая разница, на чём написано?
Re[2]: VisualDDK 1.1
От: airmaxx http://perfect-coding.blogspot.com
Дата: 10.06.09 06:43
Оценка:
Есть предложение чтобы Визард при создании проекта вместо _DEBUG использовал DBG=1.
WDK:
"You should conditionally compile the debugging code in your driver by testing the DBG preprocessor constant.
If you create your driver by running the Build utility in a checked build environment, DBG will equal 1.
If you create your driver by running the Build utility from a free build environment, DBG will equal 0 (or will be undefined if neither wdm.h nor ntddk.h is included)."

Для теста собрал fre и chk версии драйвера build-ом из WDK.
Так вот, он устанавливает такие значения:

fre: /DNDEBUG /DNDEBUG
chk: /DDBG=1 /DNDEBUG

Не уверен, но возможно это есть частичной причиной описанного здесь: http://visualddk.sysprogs.org/VisualDDKHelpers/

VS генерирует pdb файлы в несколько раз меньше чем build.
Очень похоже что в них отсутствует вся отладочная информация.

Вопрос ко всем участникам обсуждения.
Какие ключи влияют на "полноту" символьных файлов?
Re[3]: VisualDDK 1.1
От: bazis1 Канада  
Дата: 10.06.09 08:21
Оценка:
Здравствуйте, airmaxx, Вы писали:

A>Есть предложение чтобы Визард при создании проекта вместо _DEBUG использовал DBG=1.

A>WDK:
A>"You should conditionally compile the debugging code in your driver by testing the DBG preprocessor constant.
A>If you create your driver by running the Build utility in a checked build environment, DBG will equal 1.
A>If you create your driver by running the Build utility from a free build environment, DBG will equal 0 (or will be undefined if neither wdm.h nor ntddk.h is included)."

Думаю, вместо, не есть лучшая идея. Возможно, сделаю дополнительную опцию, какой набор флагов использовать. Пока можно так: #ifdef _DEBUG \\ #define DBG 1 \\ #endif.

A>Для теста собрал fre и chk версии драйвера build-ом из WDK.

A>Так вот, он устанавливает такие значения:

A>fre: /DNDEBUG /DNDEBUG

A>chk: /DDBG=1 /DNDEBUG

A>Не уверен, но возможно это есть частичной причиной описанного здесь: http://visualddk.sysprogs.org/VisualDDKHelpers/

A>VS генерирует pdb файлы в несколько раз меньше чем build.
A>Очень похоже что в них отсутствует вся отладочная информация.
А что говорит WinDbg/VisualDDK, если посмотреть NTSTATUS-переменную, собранную через Build? NTSTATUS или long? Если NTSTATUS, то какая в точности командная строка передается cl.exe?
Re[4]: VisualDDK 1.1 + VirtualKD 2.0
От: airmaxx http://perfect-coding.blogspot.com
Дата: 11.06.09 15:18
Оценка:
Здравствуйте, bazis1, Вы писали:

B>Думаю, вместо, не есть лучшая идея. Возможно, сделаю дополнительную опцию, какой набор флагов использовать. Пока можно так: #ifdef _DEBUG \\ #define DBG 1 \\ #endif.

Использую обе опции, потому как без DBG 1 не работают отладочные макосы, например KdPrint.

A>>Очень похоже что в них отсутствует вся отладочная информация.

Так и есть. Например, если в WinDbg установить тип NTSTATUS для переменной — вываливает ошибку что не находит такой тип.
Если собрать Build-ом то все типы находит корректно.

B>А что говорит WinDbg/VisualDDK, если посмотреть NTSTATUS-переменную, собранную через Build? NTSTATUS или long? Если NTSTATUS, то какая в точности командная строка передается cl.exe?

Всё таки long я немного запутался

Попробовал тестировать NDIS\PassThru. Запуск осуществляется утилитой NetCfg (с параметрами).
При запуске вываливает "There is no source code available for the current location.", если нажать ОК и Ф5 всё работает корректно.

При завершении отладки не вызывается скрипт порописанный в Stopping Driver. Соответственно, драйвер не выгружается.
Не освобождается пайп(помогает только выгрузка ВС).

Я понимаю что данных не достаточно — как можно узнать в чём проблема, общий алгоритм действий?
Инструменты VS2008, XP SP3.

Из косметических улучшений, просьба сдалать чтобы VMMMON и DDKLaunchMonitor отображались в трее.

Логи.

VirtualKD
*******************************************************************************
*VirtualKD patcher DLL successfully loaded. Patching the GuestRPC mechanism...*
*******************************************************************************
Searching patch database for information about current executable...
Using RPC dispatcher table at 0x00B04AA0 (74 entries)
Waiting for RPC table to be initialized by VMWare...
RPC table initialized. Patching it...
Successfully patched entry #1


VS:
------- Attached to a remote kernel -------
VisualDDK Launcher: Trying to launch PassThru.sys
Successfully transferred e:\Projects\PassThru\Bin\x86\PassThru.sys to 192.168.2.2 (645K/s)...
Break instruction exception — code 80000003 (first chance)
*******************************************************************************
* *
* You are seeing this message because you pressed either *
* CTRL+C (if you run kd.exe) or, *
...
...
*******************************************************************************
VisualDDK Launcher: Successfully launched PassThru.sys
------- Evaluation complete in 0 ms -------
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.