Debug信息打印

#pragma once

#pragma warning(disable: 4996)
#include "Common.h"
#include "CirticalSection.h"

class CDebugOutput;
#define DebugString			(CDebugOutput::GetInstance()->DebugStringInfo)

class CDebugOutput
{
public:
	static CDebugOutput* GetInstance();
	static void ReleaseInstance();
	int DebugStringInfo(HANDLE hThread, const TCHAR * pszFormat, ...);
private:
	CDebugOutput(void);
	CDebugOutput(const CDebugOutput& rhs);
	~CDebugOutput(void);
	static CDebugOutput* m_pInstance;
	CCirticalSection m_CirticalSection;
};

#include "StdAfx.h"
#include "DebugOutput.h"

CDebugOutput* CDebugOutput::m_pInstance = NULL;

CDebugOutput::CDebugOutput(void)
{
}

CDebugOutput::~CDebugOutput(void)
{
}

CDebugOutput* CDebugOutput::GetInstance()
{
	if (m_pInstance == NULL)		m_pInstance = new CDebugOutput;
	return m_pInstance;
}

void CDebugOutput::ReleaseInstance()
{
	if (m_pInstance)
	{
		delete m_pInstance;
		m_pInstance = NULL;
	}
}

int CDebugOutput::DebugStringInfo(HANDLE hThread, const TCHAR * pszFormat, ...)
{
	static SYSTEMTIME st;
	static TCHAR time[64];
	static TCHAR buffer[1024] = {0};
	m_CirticalSection.Lock();
	GetLocalTime(&st);
	_stprintf_s(time, 64 - 1, _T("%02d:%02d:%02d.%03d [%08x] "), st.wHour, st.wMinute, st.wSecond, st.wMilliseconds, hThread);

	va_list 	args;
	va_start(args, pszFormat);
	_vsntprintf(buffer, 1024 - 1, pszFormat, args);
	va_end(args);

	OutputDebugString(time);
	OutputDebugString(buffer);
	m_CirticalSection.Unlock();
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值