mirror of https://github.com/lianthony/NT4.0
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.
171 lines
4.2 KiB
171 lines
4.2 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1992 - 1994.
|
|
//
|
|
// File: debug.cpp
|
|
//
|
|
// Contents: Debug output routines, etc.
|
|
//
|
|
// Functions:
|
|
//
|
|
// History: dd-mmm-yy History Comment
|
|
// 12-Oct-94 Davepl NT Port
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#include "qvstub.h"
|
|
#pragma hdrstop
|
|
|
|
// BUGBUG inline asm
|
|
|
|
#define DEBUG_BREAK try { _asm { int 3 } } except (EXCEPTION_EXECUTE_HANDLER) {;}
|
|
|
|
#ifdef DEBUG
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Function: SetDebugMask
|
|
//
|
|
// Synopsis: Sets the current mask for debug output filtering
|
|
//
|
|
// Arguments: [mask] The new mask to set
|
|
//
|
|
// History: dd-mmm-yy Author Comment
|
|
// 12-Oct-94 davepl NT Port
|
|
//
|
|
// Notes:
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
UINT wDebugMask = 0x00ff;
|
|
|
|
UINT WINAPI SetDebugMask(UINT mask)
|
|
{
|
|
UINT wOld = wDebugMask;
|
|
wDebugMask = mask;
|
|
|
|
return wOld;
|
|
}
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Function: GetDebugMask
|
|
//
|
|
// Synopsis: Returns the current debug output filtering mask
|
|
//
|
|
// Returns: the UINT mask
|
|
//
|
|
// History: dd-mmm-yy Author Comment
|
|
// 12-Oct-94 davepl NT Port
|
|
//
|
|
// Notes:
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
UINT WINAPI GetDebugMask()
|
|
{
|
|
return wDebugMask;
|
|
}
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Function: AssertFailed
|
|
//
|
|
// Synopsis: Dumps info on location of assert and fires a debug break
|
|
//
|
|
// History: dd-mmm-yy Author Comment
|
|
// 12-Oct-94 davepl NT Port
|
|
//
|
|
// Notes:
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void WINAPI AssertFailed(LPCTSTR pszFile, int line)
|
|
{
|
|
LPCTSTR psz;
|
|
TCHAR ach[256];
|
|
static TCHAR szAssertFailed[] = TEXT("Assertion failed in %s on line %d\r\n");
|
|
|
|
// Strip off path info from filename string, if present.
|
|
//
|
|
if (wDebugMask & DM_ASSERT)
|
|
{
|
|
for (psz = pszFile + lstrlen(pszFile)*sizeof(TCHAR);
|
|
psz != pszFile;
|
|
psz=CharPrev(pszFile, psz))
|
|
{
|
|
if ((CharPrev(pszFile, psz) != (psz-2*sizeof(TCHAR))) && *(psz - sizeof(TCHAR)) == (TCHAR)'\\')
|
|
break;
|
|
}
|
|
wsprintf(ach, szAssertFailed, psz, line);
|
|
OutputDebugString(ach);
|
|
|
|
DEBUG_BREAK
|
|
}
|
|
}
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Function: _AssertMsg
|
|
//
|
|
// Synopsis: If the conditional is false and the current debug mask
|
|
// includes assertions, dumps the message text and fires
|
|
// a debug break
|
|
//
|
|
// History: dd-mmm-yy History Comment
|
|
// 12-Oct-94 davepl NT Port
|
|
//
|
|
// Notes:
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void __cdecl _AssertMsg(BOOL f, LPCTSTR pszMsg, ...)
|
|
{
|
|
TCHAR ach[256];
|
|
|
|
if (!f && (wDebugMask & DM_ASSERT))
|
|
{
|
|
va_list ArgList;
|
|
|
|
va_start(ArgList, pszMsg);
|
|
wvsprintf(ach, pszMsg, ArgList);
|
|
va_end(ArgList);
|
|
OutputDebugString(ach);
|
|
OutputDebugString(TEXT("\r\n"));
|
|
|
|
DEBUG_BREAK
|
|
}
|
|
}
|
|
|
|
//+-------------------------------------------------------------------------
|
|
//
|
|
// Function: _DebugMsg
|
|
//
|
|
// Synopsis: If the supplied mask is included in the current master
|
|
// debug mask, the message is displayed. NO debug break.
|
|
//
|
|
// History: dd-mmm-yy History Comment
|
|
// 12-Oct-94 davepl NT Port
|
|
//
|
|
// Notes:
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
void __cdecl _DebugMsg(UINT mask, LPCTSTR pszMsg, ...)
|
|
{
|
|
TCHAR ach[2*MAX_PATH+40]; // Handles 2*largest path + slop for message
|
|
|
|
if (wDebugMask & mask)
|
|
{
|
|
va_list ArgList;
|
|
|
|
va_start(ArgList,pszMsg);
|
|
wvsprintf(ach, pszMsg, ArgList );
|
|
va_end(ArgList);
|
|
OutputDebugString(ach);
|
|
OutputDebugString(TEXT("\r\n"));
|
|
}
|
|
}
|
|
|
|
#endif // DEBUG
|