177 lines
4.5 KiB
C
177 lines
4.5 KiB
C
|
|
||
|
#ifndef __DBG_HXX__
|
||
|
#define __DBG_HXX__
|
||
|
|
||
|
|
||
|
#define DEBUG_OUT(x)
|
||
|
#define DECLARE_HEAPCHECKING
|
||
|
#define DEBUGCHECK
|
||
|
#define TRACE(ClassName,MethodName)
|
||
|
#define TRACE_FUNCTION(FunctionName)
|
||
|
#define CHECK_HRESULT(hr)
|
||
|
#define CHECK_LASTERROR(lr)
|
||
|
#define VERIFY(x) x
|
||
|
#define DEBUG_OUT_LASTERROR
|
||
|
#define DEBUG_ASSERT(e)
|
||
|
#define PosDisplay(sz)
|
||
|
#define DbxDisplay(sz)
|
||
|
#define DbxResult(e)
|
||
|
|
||
|
#if DBG==1
|
||
|
|
||
|
#define DEB_TRACE1 DEB_USER1
|
||
|
|
||
|
// debug style : 1 - use dbg out, 2 - use message boxes
|
||
|
|
||
|
#define DBG_STYLE 1
|
||
|
|
||
|
#if defined(_CHICAGO_) && defined(DBX)
|
||
|
#undef DBG_STYLE
|
||
|
#define DBG_STYLE 1
|
||
|
#endif
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Style 1: Debug out to stdout
|
||
|
//
|
||
|
|
||
|
#if DBG_STYLE==1
|
||
|
|
||
|
DECLARE_DEBUG(Job)
|
||
|
|
||
|
#undef DEBUG_OUT
|
||
|
#define DEBUG_OUT(x) JobInlineDebugOut x
|
||
|
|
||
|
extern DWORD dwHeapChecking;
|
||
|
#undef DECLARE_HEAPCHECKING
|
||
|
#define DECLARE_HEAPCHECKING DWORD dwHeapChecking = 0
|
||
|
|
||
|
#undef DEBUGCHECK
|
||
|
#define DEBUGCHECK \
|
||
|
if ( (dwHeapChecking & 0x1) == 0x1 ) \
|
||
|
HeapValidate(GetProcessHeap(),0,NULL)
|
||
|
|
||
|
#undef TRACE
|
||
|
#define TRACE(ClassName,MethodName) \
|
||
|
DEBUGCHECK; \
|
||
|
DEBUG_OUT((DEB_TRACE, #ClassName"::"#MethodName"(%x)\n", this));
|
||
|
|
||
|
#undef TRACE_FUNCTION
|
||
|
#define TRACE_FUNCTION(FunctionName) \
|
||
|
DEBUGCHECK; \
|
||
|
DEBUG_OUT((DEB_TRACE, #FunctionName"\n"));
|
||
|
|
||
|
#undef CHECK_HRESULT
|
||
|
#define CHECK_HRESULT(hr) \
|
||
|
if ( FAILED(hr) ) \
|
||
|
{ \
|
||
|
DEBUG_OUT((DEB_ERROR, \
|
||
|
"**** ERROR RETURN <%s @line %d> -> %08lx\n", \
|
||
|
__FILE__, \
|
||
|
__LINE__, \
|
||
|
hr)); \
|
||
|
}
|
||
|
|
||
|
#undef CHECK_LASTERROR
|
||
|
#define CHECK_LASTERROR(lr) \
|
||
|
if ( lr != ERROR_SUCCESS ) \
|
||
|
{ \
|
||
|
DEBUG_OUT((DEB_ERROR, \
|
||
|
"**** ERROR RETURN <%s @line %d> -> %dL\n", \
|
||
|
__FILE__, \
|
||
|
__LINE__, \
|
||
|
lr)); \
|
||
|
}
|
||
|
|
||
|
#undef VERIFY
|
||
|
#define VERIFY(x) Win4Assert(x)
|
||
|
|
||
|
#undef DEBUG_OUT_LASTERROR
|
||
|
#define DEBUG_OUT_LASTERROR \
|
||
|
DEBUG_OUT((DEB_ERROR, \
|
||
|
"**** ERROR RETURN <%s @line %d> -> %dL\n", \
|
||
|
__FILE__, \
|
||
|
__LINE__, \
|
||
|
GetLastError()));
|
||
|
|
||
|
#undef DEBUG_ASSERT
|
||
|
#define DEBUG_ASSERT(e) \
|
||
|
if ((e) == FALSE) \
|
||
|
{ \
|
||
|
DEBUG_OUT((DEB_ERROR, \
|
||
|
"**** ASSERTION <%s> FAILED <%s @line %d>\n", \
|
||
|
#e, \
|
||
|
__FILE__, \
|
||
|
__LINE__)); \
|
||
|
}
|
||
|
|
||
|
#endif // DBG_STYLE==1
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Style 2: Debug out to message box
|
||
|
//
|
||
|
|
||
|
#if DBG_STYLE==2
|
||
|
|
||
|
extern TCHAR emsg[300];
|
||
|
|
||
|
#define PRINT_LR(lr) \
|
||
|
wsprintf(emsg, "<%s @ %d> %dL\n", __FILE__, __LINE__, (lr))
|
||
|
|
||
|
#define PRINT_HR(hr) \
|
||
|
wsprintf(emsg, "<%s @ %d> 0x%x\n", __FILE__, __LINE__, (hr))
|
||
|
|
||
|
#define DISP_ERRMSG MessageBox(NULL, emsg, TEXT("**** ERROR ****"), MB_OK)
|
||
|
|
||
|
#define DISP_MSG MessageBox(NULL, emsg, TEXT("**** TRACE ****"), MB_OK)
|
||
|
|
||
|
#undef CHECK_LASTERROR
|
||
|
#define CHECK_LASTERROR(lr) \
|
||
|
if (lr != ERROR_SUCCESS) { PRINT_LR(lr); DISP_ERRMSG; }
|
||
|
|
||
|
#undef DEBUG_OUT_LASTERROR
|
||
|
#define DEBUG_OUT_LASTERROR { PRINT_LR(GetLastError()); DISP_ERRMSG; }
|
||
|
|
||
|
#undef CHECK_HRESULT
|
||
|
#define CHECK_HRESULT(hr) \
|
||
|
if ( FAILED(hr) ) { PRINT_HR(hr); DISP_ERRMSG; }
|
||
|
|
||
|
#undef PosDisplay
|
||
|
#define PosDisplay(e) \
|
||
|
wsprintf(emsg, "<%s @ %d>\n\n\t %s", __FILE__, __LINE__, #e); DISP_MSG
|
||
|
|
||
|
#endif // DBG_STYLE==2
|
||
|
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Simple DBX messages
|
||
|
//
|
||
|
|
||
|
#ifdef DBX
|
||
|
|
||
|
#undef DbxDisplay
|
||
|
#define DbxDisplay(sz) MessageBoxA(NULL, sz, "DBX", MB_OK);
|
||
|
|
||
|
#undef DbxResult
|
||
|
#define DbxResult(e) \
|
||
|
{ \
|
||
|
char Buff[100]; \
|
||
|
if (FAILED(hr)) \
|
||
|
{ \
|
||
|
sprintf(Buff, "%s failed (%x)", #e, hr); \
|
||
|
} \
|
||
|
else \
|
||
|
{ \
|
||
|
sprintf(Buff, "%s succeeded", #e); \
|
||
|
} \
|
||
|
MessageBoxA(NULL, Buff, "DBX", MB_OK); \
|
||
|
}
|
||
|
#endif // DBX
|
||
|
|
||
|
|
||
|
#endif // DBG==1
|
||
|
|
||
|
#endif // __DBG_HXX__
|