Leaked source code of windows server 2003
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

//+-------------------------------------------------------------------------
//
// 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