Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Отладка драйвера в Soft-ICE  (Прочитано 16609 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Dmitry_177
Участник

ru
Offline Offline

« : 30-06-2007 20:06 » 

Привет всем!
Подскажите пожалуйста как отлаживать драйвер в Soft-ICE? Написал я небольшой драйвер, а при его использовании выскакивает BSOD.. Хотел бы поотлаживать его, посмотреть на какой строке выскакивает BSOD и т.д.. Как можно сделать так, чтобы в Soft-ICE отображался не ассемблерный код, а на C, на котором он и написан? И еще не очень понятно как увидеть свой драйвер в окне Soft-ICE, нажимаю Ctl+D, и что дальше не понятно..

в общем делаю так: в Symbol Loader открываю файл драйвера, и при загрузке у меня спрашиваются файлы gs_support.c и потом еще secchk.c, которых у меня нету в проектах.. вот никак не пойму что это за файлы такие?
Записан
lexer666
Гость
« Ответ #1 : 30-06-2007 22:12 » 

Цитата
Как можно сделать так, чтобы в Soft-ICE отображался не ассемблерный код, а на C, на котором он и написан?
Отладчики при всем желании си-код не покажут Ага, только дизассемблированный.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #2 : 01-07-2007 03:50 » 

lexer666, нет, почему, например а в VC6 показывается и СИ и асм код Улыбаюсь
Записан

lexer666
Гость
« Ответ #3 : 01-07-2007 07:52 » 

да, да..что-то меня торкнуло ночью
если только бинарник, то не покажет Ага)
Записан
Dmitry_177
Участник

ru
Offline Offline

« Ответ #4 : 01-07-2007 08:52 » new

В Солдатове написано же что можно видеть в Soft-ICE код на Си.. Нужно только как-то в Symbol Loader-е загрузить драйвер(отладочный)
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 02-07-2007 12:23 » 

lexer666,  не вводи людей в заблужление)
1. сишный код МОЖНО увидеть в софтайсе. (правда кирилицу не смог настроить, но это мелочи) софтайс это такой же отладчик как и отладчик студии) и умеет все то же, только немного больше)
2. Ctrl+D - показывает текущую команду текущего потока. необязательно что он будет ваш в произвольный момент времени)

1. как заставить софт айс увидеть сишный код. для этого существует символ-лоадер (а вы что думали?) к сожалению - моя новая видеокарта софайсом не поддерживается, поэтому давно в нем не работал, да и нужны уже не возникает.
короче. я не помню всех настроек компилятора и линкера, я тут выкладывал настройки студии - дебаговый варинат подойдет.
повторюсь.
компилятор:
/Oi /G6 /I "C:\DDK\XP2600.1106\inc\wxp" /I "C:\DDK\XP2600.1106\inc\ddk\wxp" /I "C:\DDK\XP2600.1106\inc\crt" /D "DBG=1" /D "_DEBUG" /D "_WINDOWS_" /D "WIN32" /D "_X86_=1" /D "i386=1" /D "STD_CALL" /D "CONDITION_HANDLING=1" /D "NT_UP=1" /D "NT_INST=0" /D "WIN32=100" /D "_NT1X_=100" /D "WINNT=1" /D "_WIN32_WINNT=0x0400" /D "_WIN32_IE=0x0400" /D "WIN32_LEAN_AND_MEAN=1" /D "DEVL=1" /D "FPO=0" /D "_DLL=1" /D "DRIVER" /D "_XP2600_SYS_DRIVER_" /D "_WIN2K_COMPAT_SLIST_USAGE" /D "_WINDLL" /X /GF /FD /EHsc /ML /FAs /Fa".\Debug_WinXP2600/" /Fo".\Debug_WinXP2600/" /Fd".\Debug_WinXP2600/" /FR".\Debug_WinXP2600/" /W3 /nologo /c /Zi /Gz /Zel /QIfdiv- /QIf /QI0f -cbstring
помоему отсюда важно было -cbstring /c /Zi ... может еще что то.

линкер:
/OUT:"Debug_WINXP2600\namedrv.sys" /VERSION:2.2 /INCREMENTAL:NO /NOLOGO /LIBPATH:"C:\DDK\XP2600.1106\lib\wxp\i386" /DLL /NODEFAULTLIB /PDB:".\Debug_WinXP2600/namedrv.pdb" /MAP:".\Debug_WinXP2600/namedrv.map" /STACK:262144,4096 /OPT:REF /OPT:ICF /ENTRY:"DriverEntry@8" /BASE:"0x10000" /MERGE:".rdata=.text" ntoskrnl.lib hal.lib wmilib.lib /DRIVER /debug:FULL /subsystem:native,1.10  /SECTION:INIT,d  /OPT:REF /OPT:ICF /osversion:5.00 /IGNORE:4001,4037,4039,4065,4070,4078,4087,4089,4096 
из этого помоему нобходмо было /debug:FULL  /OPT:REF /OPT:ICF


далее....
девайс лоадер(софтайсовский) должен знать что где лежит в частности для какого драйвера какие БД кода грузить. сущесутет два пути:
1 драйвер загружаем сами руками(CreateFile) в этом случае перед загрузкой необходимо запустить символлоадер, открыть нужный драйвер, потом нажать кропочки  "транслейт" потом "лоадсимволс".
да, перед этим! включить следующее "транслейт символс энд Соурсес" "промпт фор соурсес" и "Лоад символс онли"
извиняйте что кирилицей - лениво раскладкой щелкать)
так вот. включили, нажали транслейт - должен найти все исходные коды и скомпилить файл *.nms
(без ошибок) если ошибки - смотрите ключи компиляции, мог где то наврать - уже не помню.
дажее нажали "лоад символс" - он ентот полученный файл засосал в софт айс.
из айса кстати можно его проконтроллировать... но не помню какая команда список загруженных nms файлов показывает. читайте мануалы.

2. путь второй.
если вам надо отладить при запуске винды - что там по PNP с вашим творением делается.
 тогда примерно так же получаем файл *.nms а вот далее идем в настройки софтайса и куда то его там прописываем (точно не помню - но там сразу понятно). в этом случае он файл nms глузит при своем запуске, перед запуском винды.(перезагрузится надо будет)
в общем вам наверное первый путь подойдет.

и третье. как посмотреть по шагам выполнение драйвера.
в начале интересующего фрагмента кода драйвера ставите _asm int 3; (или _asm int 1;)
это так называемые брекпоинты. впринципе для них макросы есть, но я их не юзал.
а вообще это два программных прерывания, которые все отладчики подчит используют. VS кажись узает int 1. для драйверов чаще используется int 3 - его и рекомендую.
далее. по умолчанию софтайс на эти прерывания не обращает внимания. чтоб он делал на них бреки надо включить:
команды софтайса SET I3HERE ON (SET I1HERE ON соответственно) или OFF когда не надо. а то начнет брякпоинты всех VS проэктов ловить раньше отладчика VS)))

короче выполняется драйвер, доходит до команды int 3. вылетает любимое окошко софтайса. С СИШНЫМ КОДОМ если все правильно сделали.
а далее там F5-F6-F7-F9.... опять же головой не помню, читайте мануалы.
и вообще читайте мануалы... полезно иногда)
вот)

PS нифига се написал.....


ЗЗЫ да! еще в софтайсе используйте faults on  - оч полезная команда. в этом случае софтайс брячится на всех ошибках ядра (и не только). это либо в софтайсе набрать, либо в строке его инициализации прописать через настройку.

PPPS до кучи полезные команды BPX и прочие BP___... читайте хелп. умеет брячится аппаратно по обращению R/O по произвольному адресу. умеет аппаратно I/O отлавливать. умеет бряки по условиям и по счетчикам делать. можно бряки по именам функций ставить (при условии что список имен есть) по ядровым например
BPX CreateFile - будет все обращения к файлам брячить)
« Последнее редактирование: 02-07-2007 12:35 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Vlaor
Гость
« Ответ #6 : 03-07-2007 16:54 » 

Не понимаю какие сложности. В DDK компилишь checked version и softice подхватывает все без каких либо заморочек. Заодно можно breakpoint ставить по имени функций, и watch тоже пользовать.
Кстати, Ochkarik у меня тоже были проблемы с видео, так я включил оконный режим и все заработало.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 04-07-2007 11:30 » 

Vlaor, как раз вопрос зачем такие сложности чтобы компилить через мейк-файл DDK а не проект в студии) не люблю мейк-файлы - там дефенишинов... и непонятно кто за что отвечает и что в итоге будет) он же размером под сто килобайт)))
а сложностей нет. просто проект настроить и все) это на бумаге так страшно, на самом деле просто пяток ключиков компилятора/линкера поставить правильно и больше об этом не вспоминать...
и "заодно" возможность установки брекпоинтов к способу компиляции не относится)

вот... а насчет видео... я как раз всегда так и пользовался, через универсальный драйвер- так удобнее, строк на экране больше помещается) а на новой карте как ни бился, ctrl+d нажимаю - экран гаснет, монитор выключается. наживаю второй раз - выходит из айса, экран опять включается и все показывает. даже команды все айс понимает, если в слепую набивать)
раньше карта AGP была... NVidia кажется. сейчас pci-express NVidia GeForce PCX 5750
« Последнее редактирование: 04-07-2007 11:32 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Vlaor
Гость
« Ответ #8 : 04-07-2007 17:10 » 

Ochkarik Ну если конечно сильно разбираться с конкретными настройками make для каждого проекта то да. Я например makefile даже и не редактировал. А про break это так ... Улыбаюсь
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 05-07-2007 08:28 » 

не знаю... когда первый драйвер компилил у меня только DDK и софтайс был) а все остальные driverWizad-ы только с классами работали, хорошо что я эту идею сразу...
поэтому было два варианта, либо разбираться с огромным мейком по примерам DDK, либо с настройками)) с настройками оказалось разобраться проще, чес слово)))
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Vlaor
Гость
« Ответ #10 : 05-07-2007 09:31 » 

Очень хорошая штучка еще у Numega. Встраивается в VC как отдельная панель и модно компилить и редактировать прям там.
А так я тоже поставил DDK (с VC), написал код , а make:
Код:
# Файл Makefile
#
# DO NOT EDIT THIS FILE!!!  Edit .\sources. if you want to add a new source
# file to this component.  This file merely indirects to the real make file
# that is shared by all the driver components of the Windows NT DDK
#

!INCLUDE $(NTMAKEENV)\makefile.def
Проблем не испытал, да и SoftIce сразу заработал Улыбаюсь.
Да подобный make в любой литре вроде имеется.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 05-07-2007 10:14 » 

хм. а что значит софт айс соразу заработал?) он что до этого не работал что ли?)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Vlaor
Гость
« Ответ #12 : 06-07-2007 14:33 » 

В смысле как проставил, так и заработал. То бишь без проблем.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines