DEBUG.C
资源名称:MSDN_VC98.zip [点击查看]
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:5k
源码类别:
Windows编程
开发平台:
Visual C++
- //==========================================================================;
- //
- // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
- // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED
- // TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR
- // A PARTICULAR PURPOSE.
- //
- // Copyright (C) 1993 - 1997 Microsoft Corporation. All Rights Reserved.
- //
- //--------------------------------------------------------------------------;
- //
- // debug.c
- //
- // Description:
- // This file contains code yanked from several places to provide debug
- // support that works in win 16 and win 32.
- //
- // History:
- // 11/23/92
- //
- //==========================================================================;
- #ifdef DEBUG
- #include <windows.h>
- #include <windowsx.h>
- #include <stdarg.h>
- #include "debug.h"
- //
- // since we don't UNICODE our debugging messages, use the ASCII entry
- // points regardless of how we are compiled.
- //
- #ifdef WIN32
- #include <wchar.h>
- #else
- #define lstrcatA lstrcat
- #define lstrlenA lstrlen
- #define wvsprintfA wvsprintf
- #define GetProfileIntA GetProfileInt
- #define OutputDebugStringA OutputDebugString
- #endif
- //
- //
- //
- BOOL __gfDbgEnabled = TRUE; // master enable
- UINT __guDbgLevel = 0; // current debug level
- //--------------------------------------------------------------------------;
- //
- // void DbgVPrintF(LPSTR szFmt, LPSTR va)
- //
- // Description:
- //
- //
- // Arguments:
- //
- // Return (void):
- //
- //
- // History:
- // 11/28/92
- //
- //--------------------------------------------------------------------------;
- void FAR CDECL DbgVPrintF(LPSTR szFmt, LPSTR va)
- {
- char ach[DEBUG_MAX_LINE_LEN];
- BOOL fDebugBreak = FALSE;
- BOOL fPrefix = TRUE;
- BOOL fCRLF = TRUE;
- ach[0] = ' ';
- for (;;)
- {
- switch(*szFmt)
- {
- case '!':
- fDebugBreak = TRUE;
- szFmt++;
- continue;
- case '`':
- fPrefix = FALSE;
- szFmt++;
- continue;
- case '~':
- fCRLF = FALSE;
- szFmt++;
- continue;
- }
- break;
- }
- if (fDebugBreak)
- {
- ach[0] = ' 07';
- ach[1] = ' ';
- }
- if (fPrefix)
- lstrcatA(ach, DEBUG_MODULE_NAME ": ");
- wvsprintfA(ach + lstrlenA(ach), szFmt, va);
- if (fCRLF)
- lstrcatA(ach, "rn");
- OutputDebugStringA(ach);
- if (fDebugBreak)
- DebugBreak();
- } // DbgVPrintF()
- //--------------------------------------------------------------------------;
- //
- // void dprintf(UINT uDbgLevel, LPSTR szFmt, ...)
- //
- // Description:
- // dprintf() is called by the DPF macro if DEBUG is defined at compile
- // time.
- //
- // The messages will be send to COM1: like any debug message. To
- // enable debug output, add the following to WIN.INI :
- //
- // [debug]
- // ICSAMPLE=1
- //
- // Arguments:
- //
- // Return (void):
- //
- //
- // History:
- // 11/23/92
- //
- //--------------------------------------------------------------------------;
- void FAR CDECL dprintf(UINT uDbgLevel, LPSTR szFmt, ...)
- {
- va_list va;
- if (!__gfDbgEnabled || (__guDbgLevel < uDbgLevel))
- return;
- va_start(va, szFmt);
- DbgVPrintF(szFmt, va);
- va_end(va);
- } // dprintf()
- //--------------------------------------------------------------------------;
- //
- // BOOL DbgEnable(BOOL fEnable)
- //
- // Description:
- //
- //
- // Arguments:
- //
- // Return (BOOL):
- //
- //
- // History:
- // 11/28/92
- //
- //--------------------------------------------------------------------------;
- BOOL WINAPI DbgEnable(BOOL fEnable)
- {
- BOOL fOldState;
- fOldState = __gfDbgEnabled;
- __gfDbgEnabled = fEnable;
- return (fOldState);
- } // DbgEnable()
- //--------------------------------------------------------------------------;
- //
- // UINT DbgSetLevel(UINT uLevel)
- //
- // Description:
- //
- //
- // Arguments:
- //
- // Return (UINT):
- //
- //
- // History:
- // 11/24/92
- //
- //--------------------------------------------------------------------------;
- UINT WINAPI DbgSetLevel(UINT uLevel)
- {
- UINT uOldLevel;
- uOldLevel = __guDbgLevel;
- __guDbgLevel = uLevel;
- return (uOldLevel);
- } // DbgSetLevel()
- //--------------------------------------------------------------------------;
- //
- // UINT DbgInitialize(void)
- //
- // Description:
- //
- //
- // Arguments:
- //
- // Return (UINT):
- //
- //
- // History:
- // 11/24/92
- //
- //--------------------------------------------------------------------------;
- UINT WINAPI DbgInitialize(BOOL fEnable)
- {
- DbgSetLevel(GetProfileIntA(DEBUG_SECTION, DEBUG_MODULE_NAME, 0));
- DbgEnable(fEnable);
- return (__guDbgLevel);
- } // DbgInitialize()
- #endif // #ifdef DEBUG