Alter.Org.UA
 << Back Home EN en   Donate Donate

DbgPrint logger
for
NT3.51/NT4/NT4-TS/w2k/XP/2k3/2k3-r2/Vista and WinPE/BartPE/MobileOS

DbgPrint logger home

DbgPrint logger Registry settings


[HKLM\SYSTEM\CurrentControlSet\Services\DbgPrintLog]
REG_SZ:CmdLine

Параметры камандной строки для запуска DbgPrintLog.exe как сервиса. Допускаются любые параметры, описаные здесь, кроме -svc и -drv. Для совместимости первый элемент строки параметров должен содержать имя исполняемого файла. Данное значение является обязательным при работе в режиме сервиса.


[HKLM\SYSTEM\CurrentControlSet\Services\DbgPrintLog]
REG_SZ:WorkingDirectory

Имя каталога, в котором будут сохраняться логи. Данное значение является обязательным при работе в режиме сервиса.


[HKLM\SYSTEM\CurrentControlSet\Services\DbgPrnHk]
DWORD:BufferSize

Настройка размера буфера сообщений в Kb. Размер автоматически выравнивается на степень двойки. По умолчанию - 1Mb (1024 Kb).


[HKLM\SYSTEM\CurrentControlSet\Services\DbgPrnHk]
DWORD:CheckIrql

Перехват debug-messages на Irql > DISPATCH_LEVEL. В NT4 это не очень актуально. Хотя документация запрещает использование DbgPrint() на высоком Irql, мой UniATA драйвер пользовался этой функцией вполне успешно. А вот в w2k и старше пошли глюки - действительно нельзя. При установке этого значения в DWORD:0x00000001 драйвер будет и дальше отлавливать debug-messages, но не будет передавать управление в настоящую DbgPrint() при Irql > DISPATCH_LEVEL. Значение DWORD:0x00000000 отключает проверку (значение по умолчанию).


[HKLM\SYSTEM\CurrentControlSet\Services\DbgPrnHk]
DWORD:DoNotPassMessagesDown 

Возможность блокировки передачи debug-messages в DebugPrint(). При установке этого значения в DWORD:0x00000001 драйвер будет и дальше отлавливать debug-messages, но не будет передавать управление в настоящую DbgPrint() ни при каких условиях. Значение DWORD:0x00000000 отключает блокировку (значение по умолчанию). Очень нужная опция при отладке по шнурку (COM, IEE1394, USB2.0). Поток сообщений не будет тормозить систему, в тоже время собраные логи можно в любой момент забрать с отлаживаемой машины при помощи Kernel Debugger extension'а.


[HKLM\SYSTEM\CurrentControlSet\Services\DbgPrnHk]
DWORD:StopOnBufferOverflow

Возможность управления приоритетом старых/новых debug-messages при заполнении буфера. При установке этого значения в DWORD:0x00000001 драйвер будет игнорировать поступающие debug-messages при заполнении буфара. Значение DWORD:0x00000000 означает, что старые debug-messages будут удаляться из буфера и замещаться новыми (значение по умолчанию).

Начиная с версии 0.6d появилась возможность вызвать отладчик при заполнении буфера. Система остановится на инструкции int 3 и можно будет просмотреть или сохранить накопленые сообщения при помощи Kernel Debugger extension'а командами !dbgprn.ls или !dbgprn.save соответственно. Включается значением DWORD:0x00000002.
Внимание ! Не используете эту опцию если система не подключена к MS Kernel Debugger, SoftIce или другому отладчику режима ядра - получите синий экран.
Эта опция полезна в сочетании с DoNotPassMessagesDown=2.


[HKLM\SYSTEM\CurrentControlSet\Services\DbgPrnHk]
DWORD:TimeStampType

Возможность управления способом определения времени поступления debug-messages. Значени DWORD:0x00000000 (по умолчанию) указывает на использование KeQueryPerformanceCounter(). Эта ф-ция присутствует во всех ОС семейства NT, но довольно ресурсоемка и ее частое применение иногда плохо сказывается на работоспобности boot-драйверов (замечено на UniATA).
Значение DWORD:0x00000001 приводит к использованию инструкции RDTSC. Способ замечательный во всех отношениях кроме того, что команда RDTSC появилась только в поколении Intel Pentium'ов и AMD-k5.
Значение DWORD:0x00000002 - использовать обычную ф-цию KeQuerySystemTime(), которая точностью измерения времени совсем не блещет.

Появилось в версии DbgPrint 0.4c


[HKLM\SYSTEM\CurrentControlSet\Services\DbgPrnHk]
DWORD:AggregateMessages

Возможность склеивания (агрегации) нескольких коротких следующих друг за друго debug-messages от одного thread'а в один debug-message. При установке этого значения в DWORD:0x00000001 драйвер будет пытаться агрегировать сообщения. В этом режиме более экономно заполняется внутренний буфер сообщений, но немного страдает точность измерения времени. Значение DWORD:0x00000000 означает, что все debug-messages будут сохраняться в буфере независимо (значение по умолчанию).


[HKLM\SYSTEM\CurrentControlSet\Services\DbgPrnHk]
DWORD:DumpStackFramePtr

Возможность добавления к отладочным сообщениям текущего значения указателя стека. По умолчанию принято значение DWORD:0x00000000 - не добавлять значение указателя стека.

Появилось в версии DbgPrint 0.7


<< Back Автор: Alter (Александр А. Телятников) Сервер: Apache+PHP под FBSD © 2002-2024