文档章节

使用OutputDebugString替换掉TRACE

seanking
 seanking
发布于 2016/02/16 12:00
字数 304
阅读 28
收藏 0

使用TRACE调试很方便,但是在Unicode环境下确老是问题多多,经常会出现令人郁闷的识别问题。

_CrtDbgReport: String too long or IO Error

虽然可以通过setlocale函数来设置语言页,但是仅支持一种语言,如果需要同时显示多种语言就很令人无语。,此外TRACE有最大输出长度的限制(1K)

class XCLILocale
{
public:
	XCLILocale(void)
	{	m_strLocale = _tsetlocale(LC_ALL,_T(""));	}

	virtual ~XCLILocale(void)
	{	_tsetlocale(LC_ALL,m_strLocale);	}
public:
	LPCTSTR m_strLocale;
};
void main(void)
{
    XCLILocale locale;
    TRACE(_T("测试Test\n"));
}

Windows提供了一个API函数OutputDebugString用来向output窗口输出信息,该函数有OutputDebugStringW (Unicode) and OutputDebugStringA (ANSI)两个版本。

字符串长度无限制(至少我输出了一个约25K的XML文件就没啥问题,用TRACE最多显示一部分)。

不过使用OutputDebugString函数不支持printf 风格的格式化。需要预先格式化字符串。不过可以用CString类的FormatV函数封装一下,封装代码如下:

void __cdecl XTrace(LPCTSTR strFormat, ...)
	{
		va_list argList;
		va_start(argList, strFormat);

		CString str;
		str.FormatV(strFormat,argList);

		va_end(argList);

		OutputDebugString(str);
	}

至此,使用XTrace函数终于可以替代TRACE宏,在output窗口中自由输出测试信息了


© 著作权归作者所有

共有 人打赏支持
seanking
粉丝 3
博文 14
码字总数 5960
作品 0
杭州
高级程序员
私信 提问
VC调试时输出调试信息到Debug窗口

TRACE宏(afx.h, AfxTrace) (TRACE将信息输出到afxDump对象,只在_DEBUG定义时输出,最多输出512个字符,格式化与printf类似) afxDump对象(afx.h, CDumpContext) (afxDump调用OutputDebugString...

simpower
07/18
0
0
TRACE宏的使用方法

TRACE宏对于VC下程序调试来说是很有用的东西,有着类似printf的功能;该宏仅仅在程序的DEBUG版本中出现,当RELEASE的时候该宏就完全消失了,从而帮助你调试也在RELEASE的时候减少代码量。 使...

长平狐
2012/10/08
88
0
liudegui/log4cplus

#log4cplus 基于log4cplus修改 修改内容: 只支持Windows和Linux平台,去掉其他平台的支持(vs2010和gcc4.4测试通过)。 去除unicode的支持 只保留consoleAppender、fileAppender;并添加cus...

liudegui
2014/08/18
0
0
error C2664: 'OutputDebugStringW' : cannot conv...

错误信息:error C2664: 'OutputDebugStringW' : cannot convert parameter 1 from 'char [100]' to 'LPCWSTR' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, ......

稀饭桶子
2013/03/07
0
0
译:理解 Win32 "OutputDebugString"

坚定的 Win32 开发人员可能对 OutputDebugString() API 函数比较熟悉,它可以使你的程序和调试器进行交谈。它要比创建日志文件容易,而且所有“真正的”调试器都能使用它。应用程序和调试器交...

AlphaJay
2010/08/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

storm 环境搭建

1.下载解压 下载地址:http://storm.apache.org/downloads.html

MrPei
6分钟前
0
0
Python Base - 读写文件,字符串拼接,单引号

字符转义 读写文件cvs 字符串拼接,替换 import csvcsv_file_name = 'cardbin.csv'# insert into `card_bin_code` (name_of, code_of, card_no_prefix, bank_code) values ('中国银行......

园领T
7分钟前
0
0
基于JQUERY BOOTSTRAP 最简单的loading遮罩层

<%--loading遮罩层--%><div class="modal fade" id="loadingModal" backdrop="static" keyboard="false">   <div style="width: 200px;height:20px; z-index: 20000; position: abs......

颖辉小居
8分钟前
0
0
springboot+kafka

1,首先springboot对kafka的支持也很好,同样是在配置文件中配置好参数,然后就可以直接使用。先说一下,很简单,,,不要怕 2,我用的依赖是 <dependency> <groupId>org.springframewor...

我真是小菜鸡
12分钟前
2
0
webservice动态客户端自我记录备份(spring boot)

动态客户端相比直接调用webservice的客户端代码要简单很多,但实际上很多工作是java自己替我们做掉了。简单记录一下内容,以备后续使用: pom文件只需要引入: <!-- CXF webservice --><de...

checkboxMan
18分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部