Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

75 lines
2.0 KiB

//*********************************************************************
//* Microsoft Windows **
//* Copyright (c) 1994-1998 Microsoft Corporation
//*********************************************************************
// debugging macros
#undef ASSERT
#undef DEBUGMSG
#ifdef DEBUG
// component name define
#ifndef SZ_COMPNAME
#define SZ_COMPNAME
#endif // SZ_COMPNAME
static void _AssertFailedSz(LPCSTR pszText,LPCSTR pszFile, int line)
{
LPCSTR psz;
char ach[256];
static char szAssertFailed[] = SZ_COMPNAME "%s (%s,line %d)\r\n";
for (psz = pszFile + lstrlen(pszFile); psz != pszFile; psz=AnsiPrev(pszFile, psz))
{
if ((AnsiPrev(pszFile, psz)!= (psz-2)) && *(psz - 1) == '\\')
break;
}
wsprintf(ach, szAssertFailed, pszText,psz, line);
OutputDebugString(ach);
}
static void _AssertFailed(LPCSTR pszFile, int line)
{
static char szAssertFailed[] = "Assertion failed";
_AssertFailedSz(szAssertFailed,pszFile,line);
}
static void cdecl _DebugMsg(LPCSTR pszMsg, ...)
{
char ach[2*MAX_PATH+40];
va_list args;
va_start(args,pszMsg);
wvsprintf(ach, pszMsg, args);
//wvsprintf(ach, pszMsg, (LPSTR)(&pszMsg + 1));
OutputDebugString(SZ_COMPNAME);
OutputDebugString(ach);
OutputDebugString("\r\n");
}
static void cdecl _DebugTrap(LPCSTR pszMsg, ...)
{
_DebugMsg(pszMsg);
DebugBreak();
//_asm {int 3};
}
//#define ASSERT(f) {if (!(f)) { _AssertFailed(__FILE__, __LINE__); _asm {int 3}; } }
#define ASSERT(f) {if (!(f)) { _AssertFailed(__FILE__, __LINE__); DebugBreak(); } }
//#define ASSERTSZ(f,s) {if (!(f)) { _AssertFailedSz(s,__FILE__, __LINE__); _asm {int 3}; } }
#define ASSERTSZ(f,s) {if (!(f)) { _AssertFailedSz(s,__FILE__, __LINE__); DebugBreak(); } }
#define DEBUGMSG _DebugMsg
#define DEBUGTRAP _DebugTrap
#else // DEBUG
#define ASSERT(f)
#define ASSERTSZ(f,s)
#define DEBUGMSG 1 ? (void)0 : (void)
#define DEBUGTRAP 1 ? (void)0 : (void)
#endif