buisyhanh
Постоялец
Offline
|
|
« : 09-10-2008 08:10 » |
|
Льюди, просто написан драйвер, откомпилирован, теперь запускать его - и Ох, не работает BSOD появляется. Что делать. Наверно перед тем как запускать драйвер нужно как-то все ошибки наладить как обыно сделали для Обычных приложений - как в VC studio, Turbo C, .... Я вижу только Checked build, Free build....,или PC - PC Debug, а польного чего - то для откомпиляции нет - ту. Вы знаете какие инструменты использовали для откомпиляции ?
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #1 : 09-10-2008 08:30 » |
|
используйте отладчик режима ядра. напрмример на сайте microsoft-а в свободном скачивании. в драйвере используйте DbgPrint() для вывода отладочных сообщений.
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
DeeoniS
Интересующийся
Offline
|
|
« Ответ #2 : 09-10-2008 11:30 » |
|
Плюс к вышесказанному отлаживать надо на другой машине, можно на VMware
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #3 : 09-10-2008 14:40 » |
|
DeeoniS, к сожалению. но если не изменяет память был LiveKD. впррочем я его ни разу не использовал... равно как и winDbg) *вздыхая по SoftIce...*
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
DeeoniS
Интересующийся
Offline
|
|
« Ответ #4 : 09-10-2008 17:39 » |
|
Ochkarik, ну мне кажется это больше не к сожалению, а к счастью Как-то спокойней свеженапрограммированный драйвер тестировать и отлаживать на другой машине.
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #5 : 09-10-2008 19:01 » |
|
ну... согласен) хотя я на одной все делаю обычно. первые пол года видел синий экран раз 20 на дню) я тогда еще не умел документацию от майкрософта читать))) а сейчас обычно и отладчик не сильно нужен.
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #6 : 10-10-2008 14:13 » |
|
Видно, что самый подходяций для компиляции метод - это испольлзование два КПа. А для того чтобы на одной машине хорошо откомпилировать, то нужно сидеть и 20 раз в день перезагружить КП. Но плюс еще надо понимать, что в зтом мертвом экране вывещено. Как можно понимать эти выведенные строчки, кто - то мене может показать ?
|
|
|
Записан
|
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #7 : 10-10-2008 14:17 » |
|
Между прочим у меня есть WinDbg но использовать его для компиляции не знаю как. Просто вижу там какие - то меню с строчки.... Вообще если напиман Драйвер (исходный или .sys файл) что делать для откомпиляции. Документацию читал но мало что - практически понятно.
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #8 : 10-10-2008 15:54 » |
|
WinDbg не используется для компиляции. он используется для отладки скомпилированного драйвера. для компиляции(сборки драйвера) используется либо VS студия, либо make-файлы как в DDK. (точнее сам компилятор cl.exe) как использовать - пробовал, мне не понравилось. уже все забыл)
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #9 : 11-10-2008 01:10 » |
|
Хорошо, но для отладки если не опытный программист. Отладка - тоже проблема. Все равно нужно два КП ? и DDK tools, WinDbg или такие же.
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #10 : 11-10-2008 15:17 » |
|
buisyhanh, LiveKD поищите. на одном ПК. кажется он поможет.
SoftIce - точно можно на одном ПК, но он два года назад перестал обновляться. если ПК старый - подойдет SoftIce. им удобно железо отлаживать.
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
Vlaor
Гость
|
|
« Ответ #11 : 12-10-2008 11:14 » |
|
Желательно подключить к отладчику отладочные символы, просто в ассемблерном коде утонешь. Не знаю платные они или нет. Для XP SP1 вроде было бесплатно.
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #12 : 12-10-2008 16:29 » |
|
Vlaor, ну как сказать... не ядро же отлаживать) а свой код в дебаге отображается. на Си. но вообще не помещает конечно)
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #13 : 13-10-2008 03:26 » |
|
Нашел я статью обо дебагге с использованием VMWare : http://catch22.net/tuts/vmwareНо на степ 4 - непонятно где поставить команд (в cmd.exe) или (Windbg - и как ?). Я попробовал на cmd windbg -b -k com:pipe,port=\\.\pipe\com_1,resets=0 результат такой: 'windbg' is not recognized as an internal or external command, operable program or batch file. Кто - то мог наладить такой тип дебаг ?
|
|
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #14 : 13-10-2008 05:02 » |
|
buisyhanh, как создавал ярлык? Найди windbg с помощью explorer. Создай ярлык. Затем в свойствах ярлыка исправь "C:\xxx\windbg.exe" на "C:\xxx\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_1,resets=0
У меня, windbg установлен вот где -> "C:\Program Files\Debugging Tools for Windows\windbg.exe"
|
|
|
Записан
|
while (8==8)
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #15 : 13-10-2008 06:00 » |
|
buisyhanh, как создавал ярлык? Найди windbg с помощью explorer. Создай ярлык. Затем в свойствах ярлыка исправь "C:\xxx\windbg.exe" на "C:\xxx\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_1,resets=0
У меня, windbg установлен вот где -> "C:\Program Files\Debugging Tools for Windows\windbg.exe"
Спасибо sss, с исправлением, запускается Windbg, но еще такой вопрос: если запускать windbg после запуски WinXP в WMWare то - занято com_1, если после этого то уменя появится такой экран:
|
01.jpg (119.11 Кб - загружено 885 раз.)
|
« Последнее редактирование: 20-10-2008 09:09 от Ochkarik »
|
Записан
|
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #16 : 13-10-2008 06:01 » |
|
Это ошибки или нет ? Что делать для начала дебаг ?
|
|
|
Записан
|
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #17 : 13-10-2008 07:58 » |
|
Hу люди, что я установил не правильно а ? windbg выдает мне такой тескт. -------------------------------- Microsoft (R) Windows Debugger Version 6.9.0003.113 X86 Copyright (c) Microsoft Corporation. All rights reserved.
Opened \\.\pipe\com_1 Waiting to reconnect... Connected to Windows XP 2600 x86 compatible target, ptr64 FALSE Kernel Debugger connection established. (Initial Breakpoint requested) Symbol search path is: C:\Windows\Symbols Executable search path is: *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntkrpamp.exe - Windows XP Kernel Version 2600 MP (1 procs) Free x86 compatible Built by: 2600.xpsp_sp2_rtm.040803-2158 Kernel base = 0x804d7000 PsLoadedModuleList = 0x8055c700 System Uptime: not available Break instruction exception - code 80000003 (first chance) ******************************************************************************* * * * You are seeing this message because you pressed either * * CTRL+C (if you run kd.exe) or, * * CTRL+BREAK (if you run WinDBG), * * on your debugger machine's keyboard. * * * * THIS IS NOT A BUG OR A SYSTEM CRASH * * * * If you did not intend to break into the debugger, press the "g" key, then * * press the "Enter" key now. This message might immediately reappear. If it * * does, press "g" and "Enter" again. * * * ******************************************************************************* *** ERROR: Symbol file could not be found. Defaulted to export symbols for ntkrpamp.exe - nt!DbgBreakPointWithStatus+0x4: 8052a5d8 cc int 3 ----------------------------------------
а по этой статьи :http://www.wd-3.com/archive/RemoteDbg.htm
То нужно как-то установить еще symbols file of Driver (.pdb) сгенерированные при компиляции драйвера. Eсли так то как правильно?
- Я на писал драйвер, который связывает клавиатуру с приложением. А как через Windbg и WMware отладить его. Причем при динамической запуске драйвера - сразу BSOD. Что делать ?
|
|
|
Записан
|
|
|
|
sss
Специалист
Offline
|
|
« Ответ #18 : 15-10-2008 05:25 » |
|
buisyhanh, это реакция на точку останова int 3 в адресе 8052a5d8. Что бы продолжить выполнение нажми g и enter (написано же!). Вообще, тебе надо почитать чего нибудь по этим темам.
|
|
|
Записан
|
while (8==8)
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #19 : 20-10-2008 07:41 » |
|
Cпасибо, я исправил все и запустил в норме все но я нашел кое что хорошенкое обо kernnel hook keyboard interrupt. Но по сути дела не работает, проблему не нашел - кто может ?
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #20 : 20-10-2008 09:12 » |
|
Keyboard Sniffer.c - судя по всему очень похоже на рабочий пример... но за "KeStallExecutionProcessor(666);" руки отрывать надо.
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #21 : 20-10-2008 10:49 » |
|
Что за руки отрывать надо ? не пойму. Ну хоть бы пример я запускал драйвер ручно получает иформацию обо ИДТ и замена kbd Interrupt Vector но не получаю символы, которые я набирал после запуски. По логике то Эти символы должны выводиться после выгружки драйвера. Вы пробовали запускать его ?
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #22 : 20-10-2008 11:40 » |
|
запускать не пробовал - времени жалко... по коду - идея понятна, запустить можно за сутки, если скрытых ошибок нет.
да, перед выгрузкой выводятся первые 1024 введенных символа. должны быть. если клавиатура PS/2 а не USB)))))))))))
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #23 : 20-10-2008 12:30 » |
|
запускать не пробовал - времени жалко... по коду - идея понятна, запустить можно за сутки, если скрытых ошибок нет.
да, перед выгрузкой выводятся первые 1024 введенных символа. должны быть. если клавиатура PS/2 а не USB)))))))))))
Что там за сутки запуск, просто запускать с помощью программной установки. PS понятно, но нечего не выводииться и дебаг сделал с помощью VM и РС. Ну идея есь идея но что там не работает коректно, что при ввода символов новый ISR не запускается. Я сделал тест но получиться только замена вектор прервания и все. Дальше не чего на происходить. Может кто-то обьяснить ?
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #24 : 20-10-2008 12:45 » |
|
у вас клавиатура какая?
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #25 : 20-10-2008 15:39 » |
|
У меня PS/2 клавиатура точно, так как сейчас напушу драйвер для работы с ним. На счет точное условие что требует в коде не беспокоится. Только где то не корректный подход использован в этом исходнике. Когда Дебаг пойдет то выводятся все адрессы ИДТ и происходила замена ИДТ. Но после этого не чего больше нет. По идеи - это ошибка из за того, что не подключается к прерыванию наш драйвер. Что - то там еще надо делать ?
|
|
|
Записан
|
|
|
|
Ochkarik
|
|
« Ответ #26 : 20-10-2008 16:16 » |
|
раскоментируйте все DbgPrint. пришлите лог отладочных сообщений.
|
|
|
Записан
|
RTFM уже хоть раз наконец! :[ ну или хотя бы STFW...
|
|
|
buisyhanh
Постоялец
Offline
|
|
« Ответ #27 : 21-10-2008 01:29 » |
|
Думаю проблема не бубет решена из - за прерывание не вызывает наш драйвер, этот механизм как-то не правильно работает или не может работать. Отрекомментировка не дает ничего. Есть другой смысль.
|
|
|
Записан
|
|
|
|
|