Насчет отладки драйверов.

Тема в разделе "WASM.NT.KERNEL", создана пользователем nbyte, 13 июн 2007.

  1. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    4ый пост
     
  2. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    Я видел эту статейку.. не понятно где искать этот "Configuration Editor" написано что Settings->Configuration Editor, но что-то нигде в настройках не найду его что-то..
     
  3. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    нашел..=) оказывается это при выключенной винде на ВМ есть..
     
  4. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    Что-то опять я запутался.. На ВМ добавил Serial Port. Потом изменил на ВМ boot.ini так:
    Код (Text):
    1. [boot loader]
    2. timeout=30
    3. default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
    4. [operating systems]
    5. multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU" /fastdetect
    6. multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional RU - Debug" /fastdetect /debugport=com1 /baudrate=115200
    Правда нужно ли это не совсем понятно, т.к. я и так создал ВМ для отладки драйвера..
    Потом при запуске винды выбрал: "Microsoft Windows XP Professional RU - Debug" и потом в обычной виде(не на ВМ) нажимаю: Пуск-Выполнить: windbg -b -k com:pipe,port=\\.\pipe\com_1,resets=0 и выдается ошибка.. Скажите правильно ли я все делаю или нет?
     
  5. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    Соединяется...:))) Но теперь при соединении винда на ВМ виснет..=( т.е. я там драйвер не могу даже загрузить..
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    в отладчике g, enter.
     
  7. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Dmitry_177
    отладчик при соединении брякается. Причем там написано на чистом английском, что для продолжения надо ввести G :)
     
  8. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    а как мне теперь построчно трассировать драйвер? и чтобы на Си было?

    В WinDbg прописал в "Symbol File Path" C:\drv\objchk_wxp_x86\i386\ т.е. путь к папке где лежит *.pdb файл, и еще в "Source File Path" прописал C:\drv\ т.е. путь к исходникам драйвера.. Так правильно будет?
     
  9. nbyte

    nbyte New Member

    Публикаций:
    0
    Регистрация:
    27 май 2007
    Сообщения:
    161
    Меня тоже интересует очень этот вопрос.
    Можете ктонибудь ответить.
     
  10. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    З.Ы. до сих пор я еще так и не разобрался.. единственное что, так это вместо push xxx пишется название функци вместо адреса..
     
  11. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    Dmitry_177
    ты наверное сомпилировал без /Zi или линковал без /debug /debugtype=cv

    вообще там все на удивление просто, на самом деле
    вот что хорошо windbg умеет - так это отлаживать дрова и в сорс-моде и наоборот
    спросите конкретнее, лень рассказывать все 44 пункта хауту
     
  12. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    Как компилировать с /Zi? В компиляторе прописывать вместе с командой "build" и "/Zi", т.е. так: "build /Zi"?

    Это в boot.ini на ВМ?

    Именно это мне и хотелось бы.. На Си отлаживать драйвер..
     
  13. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    нет. C_FLAGS вроде, посмотри в хелпе из DDK.
    нет. z0mailbox имел ввиду случай когда ты бы не пользовался build из DDK, и компилировал и компоновал отдельно.
     
  14. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    У меня к примеру в папке C:\drv хранятся файлы кода драйвера, makefile и source. Компилирую драйвер checket версией компилятора. В папке C:\drv создаются две папки(сейчас не помню их названия, т.к. на работе). В одной из них создается sys-файл, т.е. сам драйвер и pdb-файл, как я понимаю это файл символов.. А дальше что-то я не пойму никак.. Как мне в WinDBG запихнуть этот pdb-файл? В File-Symbol File Path прописал путь к этому файлу, и всеравно, например при разборе crash дампа символы не загружаются...
     
  15. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    а что говорит?
    !sym noisy --- такая полезная фигня для этого случая

    вообще ВинДбг штука классная, но не для слабонервных

    заодно по-поводу build.exe ИМХО особенно новичкам --- не юзайте, делайте руками, это будет проще, ну например (в нескольких ветках вижу траблы с build.exe)

    =================== build.bat ==============
    set DDKPATH=C:\WINDDK\3790.1830

    set PATH=%PATH%;%DDKPATH%\bin\x86;%DDKPATH%\bin;
    set INCLUDE=%DDKPATH%\inc\w2k;%DDKPATH%\inc\ddk\w2k;%DDKPATH%\inc\ifs\w2k;%DDKPATH%\inc\crt;%DDKPATH%\inc\api;
    set LIB=%DDKPATH%\lib\wnet\i386;%DDKPATH%\lib\crt\i386;

    rc driver.rc

    cl /c /nologo /D "_X86_" /Gz /Zi registry.cpp
    cl /c /nologo /D "_X86_" /Gz /Zi debug.cpp
    cl /c /nologo /D "_X86_" /Gz /Zi hook.cpp
    cl /c /nologo /D "_X86_" /Gz /Zi ip_detect.cpp
    cl /c /nologo /D "_X86_" /Gz /Zi fastio.cpp
    cl /c /nologo /D "_X86_" /Gz /Zi list.cpp
    cl /c /nologo /D "_X86_" /Gz /Zi list_ip.cpp
    cl /c /nologo /D "_X86_" /Gz /Zi driver.cpp
    ml /c /Cp /coff /nologo /Gz wp.asm
    link @driver32.lnk
    =================== build.bat ==============

    =================== driver.lnk ==============
    /DRIVER
    /ENTRY:lol: riverEntry
    /FULLBUILD
    /NODEFAULTLIB
    /NOLOGO
    /OUT:driver32.sys
    /SUBSYSTEM:native
    /MACHINE:X86
    /DEBUG
    /DEBUGTYPE:CV
    /MAP
    driver.obj
    list.obj
    list_ip.obj
    fastio.obj
    hook.obj
    ip_detect.obj
    wp.obj
    debug.obj
    registry.obj
    driver.res
    ..\Messages\messages.res
    ntoskrnl.lib
    hal.lib
    wdmsec.lib
    ksecdd.lib
    ntstrsafe.lib
    =================== driver.lnk ==============

    чего уж проще?
     
  16. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    чтобы мне разобраться в этих obj-ах lib-ах, время нужно же.. вообще я в ring3 программирую на Delphi, так что мне это все придется поизучать, т.к. относительно недавно начал изучать ring0, где на Delphi ничего не неапишешь =) мне как-то проще запустить build.exe перейти в нужную папку "cd c:\drv" потом ввести build и нажать enter =)
     
  17. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    Вот что !analyze -v показывает:

    Вот и не знаю как символы загрузить.. есть же и виндовские, а еще и для моего драйвера создается... и как все это в windbg вставить?
     
  18. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
  19. TOR

    TOR New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2004
    Сообщения:
    99
    Адрес:
    Ukraine
    Dmitry_177

    set _NT_SYMBOL_PATH=C:\WINDOWS\Symbols;D:\vsprj\drivers\Debug
    Либо в виндебаге:
    File -> Symbol search path

    а лучше всего пропиши у себя переменную окружения
    _NT_SYMBOL_PATH для всех юзеров, после перезагрузки должно автоматом подхватить.
     
  20. Dmitry_177

    Dmitry_177 New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    75
    TOR
    Но это я как понимаю системные символы.. а символы драйвера нужно подгружать??? Для системных я так сделал: c:\Symbols*http://msdl.microsoft.com/download/symbols

    а можно ли так сделать? c:\drv;SRV*c:\Symbols*http://msdl.microsoft.com/download/symbols т.е. через точку с запятой c:\drv а там в какой-то папке файл символов моего драйвера и потом системные?