Модуль отладочного вывода

Тема в разделе "WASM.WIN32", создана пользователем nike, 12 окт 2004.

  1. nike

    nike New Member

    Публикаций:
    0
    Регистрация:
    17 янв 2003
    Сообщения:
    5
    Адрес:
    Ukraine
    А для чего при написании драйвера нужен модуль отладочного вывода?
     
  2. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Если скажешь, что это такое, может я скажу для чего :)
     
  3. Volynkin

    Volynkin New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    30
    Это есть модуль, который генерирует Kernel Mode Debug Output через те самые Debug Output API типа DbgPrint и тд...



    Собственно такой код в драйвере иметь нужно чтоб дебагить проще было самому же, иначе после каждого бсода репу чесать...



    Короче, в мсдн описаны API

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ddtoo ls/hh/ddtools/DebugFns_c5c14a74-7c14-4876-8ffb-d82dddd3e152.xml.asp



    у Руссиновича есть утила для мониторинга этого отладочного вывода, уже заточенная под XP SP2

    http://www.sysinternals.com/ntw2k/freeware/debugview.shtml

    ну и понятное дело она не единственная.
     
  4. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Т.е., ты хочешь сказать, что если я просто воткну DbgPrint - это типа и есть "Модуль отладочного вывода"?!
     
  5. Volynkin

    Volynkin New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    30
    хех... ну чтото типа того. Вот только что мешает обернуть тот же DbgPrint в макрос типа:
    Код (Text):
    1.  
    2. #if DBG
    3.   #define DebugPrint(_x_) \
    4.     DbgPrint("Packet type - "); \
    5.     DbgPrint _x_;
    6. #else
    7.   #define DebugPrint(_x_)
    8. #endif
    9.  


    для простого перехода от дебага к релизу и назад.



    Или например:
    Код (Text):
    1.  
    2. #if DBG
    3.   #define TRAP() DbgBreakpoint()
    4. #else
    5.   #define TRAP()
    6. #endif
    7.  


    и так далее добавляя соль/сахар по вкусу.



    Ну а потом все это завернуть в какой нибудь хедер и будет тебе счастье - "модуль отладочного вывода".
     
  6. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Ну все так и делают, но никто не называет это "модулем отладочного вывода". Просто Debug Build и всё.
     
  7. Volynkin

    Volynkin New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2004
    Сообщения:
    30
    И это верно, мы так его и называем.

    Вот только nike вычитал об этом в какой то умной книжке или руководстве по DDK, где они это зовут "Отладочный вывод" aka "Debug Output", что собственно и есть поток данных с драйвера в рантайме.

    Посмотри хотябы тот же DebugView (ссылка выше). Там у него Debug Output через слово идет. Ну а модуль это и есть враппер всевозможных комбинаций макросов исключительно для чистоты кода.