Kernel Debugger extension for Log Extraction
DbgPrint logger home
Install
- WinDbg:
Скопируйте dbgprn.dll в подкаталог winext вашего WinDbg, например
в E:\Program Files\WinDbg\winext. После этого станут доступны команды для работы
с логами.
Сам WinDbg берется отсюда:
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx.
Подробно о сборе логов и настройке WinDbg в связке с DbgPrint Dump можно почитать здесь:
WinDbg HOWTO для тестировщиков
Вместо WinDbg можно использовать i386kd.exe.
- i386kd.exe NT4:
Скопируйте dbgprn.dll в каталог где лежит i386kd.exe
- i386kd.exe 2000:
Почему-то не работает.
- i386kd.exe XP:
Скопируйте dbgprn.dll в подкаталог winext, находящийся рядом с i386kd.exe.
Commands
-
ls, list -
просмотреть лог.
-
save -
сохранить лог в файл.
-
del -
очистить буфер сообщений на отлаживаемой машине.
(since v0.6d)
-
lsig -
найти буфер сообщений путем поиска сигнатуры в физической памяти.
-
pause -
приостановить/продолжить сбор логов.
(since v0.6d)
-
drvopt -
поменять параметры сбора логов.
(since v0.7g)
ls, list
Команда позволяет полностью или частично просмотреть внутренний буфер сообщений.
Формат вывода задается точно такими же ключами как и у
DbgPrintLog.exe
Note:
Иногда WinDbg не удается найти в памяти DbgPrnHk.sys - драйвер, занимающийся сбором логов.
Если вы уверены, что драйвер был запушен, можно попробовать найти его по сигнатуре с помощью команды
!dbgprn.lsig. А если даже знаете адрес - то вообще хорошо (подробности
тут).
!ls [-h] [-i] [-a] [<1st message> [<last message> | -n <NUM messages>]]
or
!dbgprn.ls [-h] [-i] [-a] [<1st message> [<last message> | -n <NUM messages>]]
-h show this help message
-a show all messages and summary info
-e show messages from entire buffer, including those are passed
up to service and potentially saved to disk (since v0.6e)
--info show summary info only (default)
--start NUM show starting from NUM message in buffer
--count NUM show not more than NUM messages
--last NUM show only NUM last messages (since v0.5f)
--next NUM show only NUM last messages (since v0.5f)
Output format modifiers:
-m show initiator mode (K - kernel, U - user)
-p show Process ID
-t show Thread ID
-i show IRQL
-cpu show CPU number
--full same as -m -p -t -i
-T show timestamp
-fm M do not show messages from <M> mode (<M> can be K or U)
-sfp show Stack Frame Pointer (since v0.7)
save
Команда позволяет полностью или частично сохранить внутренний буфер сообщений в файл.
Note:
Иногда WinDbg не удается найти в памяти DbgPrnHk.sys - драйвер, занимающийся сбором логов.
Если вы уверены, что драйвер был запушен, можно попробовать найти его по сигнатуре с помощью команды
!dbgprn.lsig.
!save [-h] [-a] [<1st message> [<last message> | -n <NUM messages>]] -f <FILENAME>
or
!dbgprn.save [-h] [-a] [<1st message> [<last message> | -n <NUM messages>]] -f <FILENAME>
-h show this help message
--file NAME name of the file for saving messages
-a save all messages
-e show messages from entire buffer, including those are passed
up to service and potentially saved to disk (since v0.6e)
--start NUM show starting from NUM message in buffer
--count NUM show not more than NUM messages
--last NUM show only NUM last messages (since v0.5f)
Output format modifiers:
-m show initiator mode (K - kernel, U - user)
-p show Process ID
-t show Thread ID
-i show IRQL
-cpu show CPU number
--full same as -m -p -t -i
-T show timestamp
-fm M do not show messages from <M> mode (<M> can be K or U)
--raw save messages in raw (binary) format (since v0.6e)
-sfp show Stack Frame Pointer (since v0.7)
При использовании RAW формата полученый файл можно сконвертировать в читабельный (текстовый) формат
при помощи
DbgPrintLog.exe --in_file "saved.msg" [<additional options>] "output.log"
del
Команда позволяет очистить внутренний буфер сообщений на отлаживаемой машине.
(since v0.6d)
!del
or
!dbgprn.del
pause
Команда позволяет приостановить/продолжить сбор сообщений на отлаживаемой машине.
Без параметров переключает состояние, '+' - включить паузу, '-' - продолжить.
(since v0.6d)
!pause [+|-]
or
!dbgprn.pause [+|-]
drvopt
Команда позволяет менять параметры сбора сообщений на отлаживаемой машине.
(since v0.6d)
!drvopt <OPTION_NAME> <VALUE>
or
!dbgprn.drvopt <OPTION_NAME> <VALUE>
Допустимые OPTION_NAME'ы:
CheckIrql
DoNotPassMessagesDown
StopOnBufferOverflow
TimeStampType
AggregateMessages
DumpToHalDisplay
DumpStackFramePtr
Читайте описание опций здесь.
lsig
Команда позволяет найти буфер сообщений путем сканирования физической памяти на предмет сигнатуры.
Может быть полезно в слечае системных поврежденных структур.
!lsig --max MAXMEM look for signature below MAXMEM Mb
!lsig ADDR check for signature at ADDR virtual address
!lsig -h show this help messages
!lsig look for signature through 1Gb
Адрес сигнатурной страницы ADDR пишется в лог при инициализации драйвера и выглядит это сообщение так:
DbgPrnHkInitialize: Allocated signature page at 0x8078b000 // !dbgprn.lsig 8078b000
Это сообщение видно в отладчике даже если вы используете режим DoNotPassMessagesDown. Мало того, при
использовании DoNotPassMessagesDown оно не будет вытеснено белее новыми отладочными сообщениями.
Предложения и замечания слать на
alterX@alter.org.ua (remove X)
|