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.
175 lines
4.3 KiB
175 lines
4.3 KiB
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1997.
|
|
//
|
|
// File: Debug.cpp
|
|
//
|
|
// Contents: Debug Code
|
|
//
|
|
// Classes:
|
|
//
|
|
// Notes:
|
|
//
|
|
// History: 05-Nov-97 rogerg Created.
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
#include "lib.h"
|
|
|
|
#ifdef _DEBUG
|
|
|
|
// globals for keeping track of debug flags
|
|
DWORD g_dwDebugLogAsserts = 0;
|
|
|
|
#endif // _DEBUG
|
|
|
|
#ifdef _DEBUG
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Function: InitDebugFlags, public
|
|
//
|
|
// Synopsis: Called to setup global debugFlags
|
|
//
|
|
// Arguments:
|
|
//
|
|
// Returns:
|
|
//
|
|
// Modifies:
|
|
//
|
|
// History: 05-Nov-97 rogerg Created.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
STDAPI_(void) InitDebugFlags(void)
|
|
{
|
|
DWORD cbData;
|
|
DWORD cbType;
|
|
HKEY hkeyDebug;
|
|
|
|
// always use Ansii version so can setup debug before
|
|
|
|
g_dwDebugLogAsserts = 0;
|
|
|
|
if (ERROR_SUCCESS == RegOpenKeyExA(HKEY_LOCAL_MACHINE,
|
|
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Syncmgr\\Debug"
|
|
,0,KEY_READ,&hkeyDebug) )
|
|
{
|
|
cbType = REG_DWORD;
|
|
cbData = sizeof(g_dwDebugLogAsserts);
|
|
|
|
if (ERROR_SUCCESS != RegQueryValueExA(hkeyDebug,
|
|
"LogAsserts",
|
|
NULL,
|
|
&cbType,
|
|
(LPBYTE) &g_dwDebugLogAsserts,
|
|
&cbData))
|
|
{
|
|
g_dwDebugLogAsserts = 0;
|
|
}
|
|
|
|
RegCloseKey(hkeyDebug);
|
|
}
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Function: FnAssert, public
|
|
//
|
|
// Synopsis: Displays the Assert dialog
|
|
//
|
|
// Arguments: [lpstrExptr] - Expression
|
|
// [lpstrMsg] - Msg, if any, to append to the Expression
|
|
// [lpstrFilename] - File Assert Occured in
|
|
// [iLine] - Line Number of Assert
|
|
//
|
|
// Returns: Appropriate status code
|
|
//
|
|
// Modifies:
|
|
//
|
|
// History: 05-Nov-97 rogerg Created.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
STDAPI FnAssert( LPSTR lpstrExpr, LPSTR lpstrMsg, LPSTR lpstrFileName, UINT iLine )
|
|
{
|
|
int iResult = 0;
|
|
char lpTemp[] = "";
|
|
char lpBuffer[512];
|
|
char lpLocBuffer[256];
|
|
|
|
|
|
if (NULL == lpstrMsg)
|
|
lpstrMsg = lpTemp;
|
|
|
|
if (!g_dwDebugLogAsserts)
|
|
{
|
|
|
|
wnsprintfA(lpBuffer, ARRAYSIZE(lpBuffer), "Assertion \"%s\" failed! %s", lpstrExpr, lpstrMsg);
|
|
wnsprintfA(lpLocBuffer, ARRAYSIZE(lpLocBuffer), "File %s, line %d; (A=exit; R=break; I=continue)", lpstrFileName, iLine);
|
|
|
|
iResult = MessageBoxA(NULL, lpLocBuffer, lpBuffer,
|
|
MB_ABORTRETRYIGNORE | MB_SYSTEMMODAL);
|
|
|
|
if (iResult == IDRETRY)
|
|
{
|
|
DebugBreak();
|
|
}
|
|
else if (iResult == IDABORT)
|
|
{
|
|
FatalAppExitA(0, "Assertion failure");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
wnsprintfA(lpBuffer, ARRAYSIZE(lpBuffer), "Assertion \"%s\" failed! %s\n", lpstrExpr, lpstrMsg);
|
|
wnsprintfA(lpLocBuffer, ARRAYSIZE(lpLocBuffer), "File %s, line %d\n\n",lpstrFileName, iLine);
|
|
|
|
OutputDebugStringA(lpBuffer);
|
|
OutputDebugStringA(lpLocBuffer);
|
|
}
|
|
|
|
return NOERROR;
|
|
}
|
|
|
|
//+---------------------------------------------------------------------------
|
|
//
|
|
// Function: FnTrace, public
|
|
//
|
|
// Synopsis: Displays the Assert dialog
|
|
//
|
|
// Arguments: [lpstrMsg] - Msg in trace
|
|
// [lpstrFilename] - File TRACE Occured in
|
|
// [iLine] - Line Number of TRACE
|
|
//
|
|
// Returns: Appropriate status code
|
|
//
|
|
// Modifies:
|
|
//
|
|
// History: 14-Jan-98 rogerg Created.
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
|
|
STDAPI FnTrace(LPSTR lpstrMsg, LPSTR lpstrFileName, UINT iLine )
|
|
{
|
|
int iResult = 0;
|
|
char lpTemp[] = "";
|
|
char lpBuffer[512];
|
|
|
|
if (NULL == lpstrMsg)
|
|
lpstrMsg = lpTemp;
|
|
|
|
// should have flag to turn tracing on instead of changing header.
|
|
wnsprintfA(lpBuffer, ARRAYSIZE(lpBuffer), "%s %s(%d)\r\n",lpstrMsg,lpstrFileName,iLine);
|
|
|
|
OutputDebugStringA(lpBuffer);
|
|
|
|
return NOERROR;
|
|
}
|
|
|
|
#endif // _DEBUG
|
|
|
|
|