You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
3.3 KiB
196 lines
3.3 KiB
/*++
|
|
|
|
Copyright (c) 1997 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
debug.c
|
|
|
|
Abstract:
|
|
|
|
Various helpful debugging functions
|
|
|
|
Author:
|
|
|
|
Based on code by Mike Tsang (MikeTs)
|
|
Stephane Plante (Splante)
|
|
|
|
Environment:
|
|
|
|
User mode only
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include "pch.h"
|
|
|
|
ULONG globalDebugIndentLevel = 0;
|
|
ULONG globalVerbosityLevel = 0;
|
|
UCHAR DebugMessageBuffer[2048];
|
|
|
|
VOID
|
|
IndentProcedure(
|
|
VOID
|
|
)
|
|
{
|
|
ULONG i;
|
|
|
|
for (i = 0; i < globalDebugIndentLevel; i++) {
|
|
|
|
if (GlobalPrintFnc != NULL) {
|
|
|
|
GlobalPrintFnc("| ");
|
|
|
|
} else {
|
|
|
|
fprintf( stderr, "| ");
|
|
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
VOID
|
|
DebugEnterProcedure(
|
|
ULONG VerbosityLevel,
|
|
PCCHAR Format,
|
|
...
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This routine handles displaying of information when a procedure is
|
|
entered
|
|
|
|
Arguments:
|
|
|
|
Verbosity - We have to be at this verbosity level to display a string
|
|
Format - String to print
|
|
... - Arguments
|
|
|
|
Return Value:
|
|
|
|
None
|
|
|
|
--*/
|
|
{
|
|
va_list marker;
|
|
|
|
if (VerbosityLevel <= globalVerbosityLevel) {
|
|
|
|
IndentProcedure();
|
|
va_start( marker, Format );
|
|
if (GlobalPrintFnc != NULL) {
|
|
|
|
vsprintf( DebugMessageBuffer, Format, marker );
|
|
GlobalPrintFnc( DebugMessageBuffer );
|
|
|
|
} else {
|
|
|
|
vfprintf( stderr, Format, marker );
|
|
fflush( stderr );
|
|
|
|
}
|
|
va_end ( marker );
|
|
|
|
}
|
|
globalDebugIndentLevel++;
|
|
}
|
|
|
|
VOID
|
|
DebugExitProcedure(
|
|
ULONG VerbosityLevel,
|
|
PCCHAR Format,
|
|
...
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This routine handles displaying of information when a procedure is
|
|
exited
|
|
|
|
Arguments:
|
|
|
|
Verbosity - We have to be at this verbosity level to display a string
|
|
Format - String to print
|
|
... - Arguments
|
|
|
|
Return Value:
|
|
|
|
None
|
|
|
|
--*/
|
|
{
|
|
va_list marker;
|
|
|
|
globalDebugIndentLevel--;
|
|
if (VerbosityLevel <= globalVerbosityLevel) {
|
|
|
|
IndentProcedure();
|
|
va_start( marker, Format );
|
|
if (GlobalPrintFnc != NULL) {
|
|
|
|
vsprintf( DebugMessageBuffer, Format, marker );
|
|
GlobalPrintFnc( DebugMessageBuffer );
|
|
|
|
} else {
|
|
|
|
vfprintf( stderr, Format, marker );
|
|
fflush( stderr );
|
|
|
|
}
|
|
va_end ( marker );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
VOID
|
|
DebugPrintProcedure(
|
|
ULONG VerbosityLevel,
|
|
PCCHAR Format,
|
|
...
|
|
)
|
|
/*++
|
|
|
|
Routine Description:
|
|
|
|
This routine handles displaying of information when a procedure is
|
|
exited
|
|
|
|
Arguments:
|
|
|
|
Verbosity - We have to be at this verbosity level to display a string
|
|
Format - String to print
|
|
... - Arguments
|
|
|
|
Return Value:
|
|
|
|
None
|
|
|
|
--*/
|
|
{
|
|
va_list marker;
|
|
|
|
if (VerbosityLevel <= globalVerbosityLevel) {
|
|
|
|
IndentProcedure();
|
|
va_start( marker, Format );
|
|
if (GlobalPrintFnc != NULL) {
|
|
|
|
vsprintf( DebugMessageBuffer, Format, marker );
|
|
GlobalPrintFnc( DebugMessageBuffer );
|
|
|
|
} else {
|
|
|
|
vfprintf( stderr, Format, marker );
|
|
fflush( stderr );
|
|
|
|
}
|
|
va_end ( marker );
|
|
|
|
}
|
|
}
|