分享

DebugOutputString 使用 - 雨狼的避难所 - CSDNBlog

 ShaneWu 2009-10-09
DebugOutputString
功能:发送一个字串到调试器的显示。
函数原型:void WINAPI OutputDebugString( LPCTSTR lpOutputString );
头文件:
一.最简单的用法
#define MAX_DBG_MSG_LEN (1024)
char[MAX_DBG_MSG_LEN];
sprintf(msgbuf, "LastError=%ld\n", GetLastError());
OutputDebugString(msgbuf);
二.扩展的用法
按照printf的风格的对OutputDebugString进行封装
#define MAX_DBG_MSG_LEN (1024)
static void __dbg_printf (const char * format,...)
{
char buf[MAX_DBG_MSG_LEN];
va_list ap;
va_start(ap, format);
_vsnprintf(buf, sizeof(buf), format, ap);
va_end(ap);
OutputDebugString(buf);
}
使用:
__dbg_printf( "LastError=%ld\n", GetLastError());
三.进一步的扩展
对DEBUG和RELEASE下的区分.
ifdef _DEBUG
static void __dbg_printf (const char * format,...)
{
char buf[MAX_DBG_MSG_LEN];
va_list ap;
va_start(ap, format);
_vsnprintf(buf, sizeof(buf), format, ap);
va_end(ap);
OutputDebugString(buf);
}
#else
static void __dbg_printf (const char * format,...) {}
#endif
顺便说一下宏中对不定参数的使用
Linux下
#define dbg(format, arg...) __dbg_printf(format, ## arg)
Windows
#define dbg(format, ...) __dbg_printf(format, __VA_ARGS__)
当然有最直接的定义方式
#define dbg __dbg_printf
还有一个应该算比较独特的用法吧
#define PerFormat "[ThreadID @ %08d] "
#define dbgex(format, ...) __dbg_printf(PerFormat format,
GetCurrentProcessId(), __VA_ARGS__)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多