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.
|
|
//
// Debug.cpp
//
// Debug functionality shared between different projects (for use in
// non-MFC projects).
//
// History:
//
// 3/??/96 KenSh Copied from InetSDK sample, added AfxTrace from MFC
// 4/10/96 KenSh Renamed AfxTrace to MyTrace (to avoid linking conflicts
// when linking with MFC).
// 11/15/96 KenSh Automatically break on assert within assert
//
#include "stdafx.h"
#ifdef _DEBUG
#include "Debug.h"
#include <stdlib.h>
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
// determine number of elements in an array (not bytes)
#ifndef _countof
#define _countof(array) (sizeof(array)/sizeof((array)[0]))
#endif
//*** Globals
//
static BOOL g_bInAssert = FALSE;
// DisplayAssert
//
// Given a file and line number, displays an Assertion dialog box with
// Abort/Retry/Ignore choices.
//
// Returns TRUE if the program should break into the debugger, else FALSE.
//
extern "C" BOOL DisplayAssert(LPCSTR pszMessage, LPCSTR pszFile, UINT nLine) { char szMsg[250];
if (!pszFile) pszFile = _T("Unknown file");
if (!pszMessage) pszMessage = _T("");
// Break on assert within assert
if (g_bInAssert) { AfxDebugBreak(); return FALSE; }
wnsprintf(szMsg, ARRAYSIZE(szMsg), _T("Assertion Failed! Abort, Break, or Ignore?\n\nFile: %s\nLine: %d\n\n%s"), pszFile, nLine, pszMessage);
HWND hwndActive = GetActiveWindow();
// Put up a dialog box
//
g_bInAssert = TRUE; int nResult = MessageBox(hwndActive, szMsg, _T("Assertion failed!"), MB_ICONHAND | MB_ABORTRETRYIGNORE | MB_SYSTEMMODAL); g_bInAssert = FALSE;
switch(nResult) { case IDABORT: FatalAppExit(0, _T("Bye")); return FALSE;
case IDRETRY: return TRUE; // Need to break into debugger
default: return FALSE; // continue.
} }
void __cdecl MyTrace(const char* lpszFormat, ...) { va_list args; va_start(args, lpszFormat);
int nBuf; TCHAR szBuffer[512];
nBuf = wvnsprintf(szBuffer, ARRAYSIZE(szBuffer), lpszFormat, args); ASSERT(nBuf < _countof(szBuffer));
OutputDebugString(szBuffer);
va_end(args); }
#endif // _DEBUG
|