|
|
//
// Microsoft Corporation - Copyright 1997
//
//
// DEBUG.H - Debugging header
//
#ifndef _DEBUG_H_
#define _DEBUG_H_
// structures
typedef struct { LPBYTE lpAddr; // Address
DWORD dwColor; // Color to use
LPSTR lpszComment; // Comment to show
} DUMPTABLE, *LPDUMPTABLE;
#pragma warning(disable:4200)
typedef struct { DWORD dwCount; struct { DWORD dwCode; LPSTR lpDesc; } ids[]; } CODETOSTR, *LPCODETOSTR; #pragma warning(default:4200)
// globals
extern const char g_szTrue[]; extern const char g_szFalse[]; extern CODETOSTR HRtoStr; extern CODETOSTR HSEtoStr; extern CODETOSTR ErrtoStr;
// macros
#define BOOLTOSTRING( _f ) ( _f ? g_szTrue : g_szFalse )
// constants
// Maximum number of dump table entries
#define MAX_DT 400
// debug flags
#define TF_ALWAYS 0xFFFFffff
#define TF_FUNC 0x80000000 // Trace with function calls
#define TF_DLL 0x00000001 // DLL entry points
#define TF_RESPONSE 0x00000002 // Responses
#define TF_READDATA 0x00000004 // Data reading functions
#define TF_PARSE 0x00000008 // Parsing
#define TF_SERVER 0x00000010 // Call to server callbacks
#define TF_LEX 0x00000020 // Lex
#ifdef DEBUG
// Globals
extern DWORD g_dwTraceFlag;
// macros
#define DEBUG_BREAK do { _try { _asm int 3 } _except (EXCEPTION_EXECUTE_HANDLER) {;} } while (0)
#define DEBUGTEXT(sz, msg) /* ;Internal */ \
static const TCHAR sz[] = msg; #define Assert(f) \
{ \ DEBUGTEXT(szFile, TEXT(__FILE__)); \ if (!(f) && AssertMsg(0, szFile, __LINE__, TEXT(#f) )) \ DEBUG_BREAK; \ }
// functions
BOOL CDECL AssertMsg( BOOL fShouldBeTrue, LPCSTR pszFile, DWORD dwLine, LPCSTR pszStatement );
void CDECL TraceMsg( DWORD mask, LPCSTR pszMsg, ... ); void CDECL TraceMsgResult( DWORD mask, LPCODETOSTR lpCodeToStr, DWORD dwResult, LPCSTR pszMsg, ... );
#else // DEBUG
#define DEBUG_BREAK
#define AssertMsg 1 ? (void)0 : (void)
#define TraceMsg 1 ? (void)0 : (void)
#define TraceMsgResult 1 ? (void)0 : (void)
#endif // DEBUG
// HTML output debugging messages
void CDECL DebugMsg( LPSTR lpszOut, LPCSTR pszMsg, ... ); void CDECL DebugMsgResult( LPSTR lpszOut, LPCODETOSTR lpCodeToStr, DWORD dwResult, LPCSTR pszMsg, ... ); //
// These are for users of BOTH RETAIL and DEBUG. They only echo to the
// logfile and to the debug output (if process attached to IIS).
//
void CDECL LogMsgResult( LPSTR lpszLog, LPSTR lpStr, LPCODETOSTR lpCodeToStr, DWORD dwResult, LPCSTR pszMsg, ... ); void CDECL LogMsg( LPSTR lpszLog, LPSTR lpStr, LPCSTR pszMsg, ... );
#endif // _DEBUG_H_
|