您的位置:首页 > 其它

VC调试信息的输出

2017-12-22 15:18 134 查看
李国帅 编2006-9-12 11:29

头文件

//    File Name    :  DbgMsg.h
#ifndef __DBGMSG_H__
#define __DBGMSG_H__

//向哪个窗口打印信息
#ifdef DBGMSG_ASST_WINDOW        //assistant window
#define DbgPrintf DbgAsstwndPrintf
#endif

#ifdef DBGMSG_MSGBOX_WINDOW        //message box window
#define  DbgPrintf DbgMsgboxPrintf
#endif

#ifdef DBGMSG_FILE_OUTPUT            //Output debug message to a file.
#define DbgPrintf DbgFilePrintf
#endif

#ifdef DBGMSG_MSVC_WINDOW            //MS-VC output window
#define DbgPrintf DbgMsVcPrintf
#endif

#ifndef DbgPrintf
#define DbgPrintf DbgMsVcPrintf
#endif

#define DoReturnVal(condition, return_val) \
if (condition)\
{                        \
V();\
return return_val;    \
}

#define DoReturn(condition) \
if (condition)\
{                        \
V();\
return;            \
}
#define IsEmpty(p)    (p == NULL)
#define IsNull(p)    (p == NULL)
#define IsFalse(p)    (p == FALSE)
#define IsTrue(p)    (p == TRUE)

#ifdef __cplusplus
extern "C" {
#endif //__cplusplus

void DbgMsVcPrintf (char *fmt, ... );
void DbgMsgboxPrintf (char *fmt, ... );
void DbgAsstwndPrintf (char *fmt, ... );
void DbgFilePrintf (char *fmt, ... );
void DbgPopLastError(void);

void DbgWriteStrFile(LPSTR lpszData);

#ifdef __cplusplus
}
#endif //__cplusplus

#endif    //__DBGMSG_H__


函数

//    File Name    :  DbgMsg.CPP
#include "stdafx.h"
#include "DbgPrint.h"

#define DBG_STR_MAX_LEN 256

#define OUTPUT_FILE_NAME "d:\\vc app\\bin\\OUTPUT.LOG"

HWND g_hwndDbgEdit = NULL;

void DbgMsVcPrintf (char *fmt, ... )
{
va_list argptr;                /* Argument list pointer    */
char str[DBG_STR_MAX_LEN];    /* Buffer to build sting into    */

va_start (argptr, fmt);        /* Initialize va_ functions    */
wvsprintf (str, fmt, argptr);    /* prints string to buffer    */
va_end (argptr);                /* Close va_ functions        */

OutputDebugString(str);
OutputDebugString(TEXT("\r\n"));
}

void DbgMsgboxPrintf (char *fmt, ... )
{
va_list argptr;                /* Argument list pointer    */
char str[DBG_STR_MAX_LEN];    /* Buffer to build sting into    */

va_start (argptr, fmt);        /* Initialize va_ functions    */
wvsprintf (str, fmt, argptr);    /* prints string to buffer    */
va_end (argptr);                /* Close va_ functions        */

MessageBox (NULL, str, "Debug Message(DbgMsgboxPrintf)",
MB_ICONINFORMATION | MB_OK);
}

void DbgFilePrintf (char *fmt, ... )
{
FILE *output;
va_list argptr;                /* Argument list pointer    */
char str[DBG_STR_MAX_LEN];    /* Buffer to build sting into    */

va_start (argptr, fmt);        /* Initialize va_ functions    */
wvsprintf (str, fmt, argptr);    /* prints string to buffer    */
va_end (argptr);                /* Close va_ functions        */

output = fopen(OUTPUT_FILE_NAME, "a");
if( output==NULL )    return;
fprintf(output, "%s", str);
fclose(output);
}

void DbgAsstwndPrintf (char *fmt, ... )
{
va_list argptr;                /* Argument list pointer    */
char str[DBG_STR_MAX_LEN];    /* Buffer to build sting into    */

va_start (argptr, fmt);        /* Initialize va_ functions    */
wvsprintf (str, fmt, argptr);    /* prints string to buffer    */
va_end (argptr);                /* Close va_ functions        */

if (g_hwndDbgEdit != NULL)
{
SetWindowText(g_hwndDbgEdit, str);
}
}

void DbgPopLastError(void)
{
LPVOID lpMsgBuf;
FormatMessage(    FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL );
//DbgPrintf (lpMsgBuf);
MessageBox (NULL, (LPCSTR)lpMsgBuf, "Debug Message(DbgPopLastError)",
MB_ICONINFORMATION | MB_OK);
LocalFree( lpMsgBuf );
}

void DbgWriteStrFile(LPSTR lpszData)
{
FILE *output;
output = fopen(OUTPUT_FILE_NAME, "a");
if( output == NULL )
return;
while (*lpszData)
{
fwrite (lpszData++, sizeof(char), 1, output);
}
fclose(output);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: