在VS2008一个仿造别人写的一个方便的调试宏

刚逛论坛看到有人说在VC的监视中输入@err,hr能查看错误,也把自己写的一个调试宏也写出来。

本来还想加个日志功能的,想想还是算了,需要加入的话自己写吧。

嘿嘿,看看这个宏会打印时间,错误代码,所在文件,函数,行号,程序进程号,线程号和程序名称,够详细吧~

在Release版本中也可以用DbgView查看OutputDebugString打印的调试信息。

需要调用的话直接调用“DBGMSG();”简单吧。

 

废话就这么多了,下面上主菜。

void DebugMsg(LPCSTR pszFormat, ...) { /* char buf[1024]; sprintf_s(buf, "[%s](%lu): ", m_szServiceName, GetCurrentThreadId()); va_list arglist; va_start(arglist, pszFormat); vsprintf(&buf[strlen(buf)], pszFormat, arglist); va_end(arglist); strcat(buf, "/n"); OutputDebugString(buf); */ char buf[3072]; char buf1[1024]; va_list arglist; RtlZeroMemory(buf, sizeof(buf)); //sprintf_s(buf, "[%s](%lu): ", m_szServiceName, GetCurrentThreadId()); //sprintf_s(buf, "/tTID:%lu/n", GetCurrentThreadId()); va_start(arglist, pszFormat); vsprintf_s(&buf[strlen(buf)], sizeof(buf),pszFormat, arglist); va_end(arglist); sprintf_s(buf1, "/tProcessID:%lu/n/tThreadID:%lu/n", GetCurrentProcessId(), GetCurrentThreadId()); strcat_s(buf, sizeof(buf), buf1); GetModuleFileNameA(NULL, buf1, sizeof(buf1)); strcat_s(buf, sizeof(buf), "/t"); strcat_s(buf, sizeof(buf), buf1); strcat_s(buf, sizeof(buf), "/n"); OutputDebugStringA(buf); } #define DBGMSG() {DebugMsg("/tReport!!!/n/tTime:%s %s/n/tErrorCode:%d/n/tFile:%s/n/tFuntion:%s/n/tLine:%d/n", / __DATE__, __TIME__, GetLastError(), __FILE__, __FUNCTION__, __LINE__);}

 

后记,本来想写出UNICODE的,但打印出来是乱码,看来微软推行UNICODE路还很长哈。

参考文献:《用 C++ 创建简单的 Win32 服务程序

 

你可能感兴趣的:(Date,list,function,File,null,微软)