0306 vprintf trace Debug Assertion Failed afxdump

0306 vprintf trace Debug Assertion Failed info
http://www.yippeesoft.com/blog/p/0306vprintftraceAsserFailedinfo.php

0306 vprintf trace Debug Assertion dumpout arg
http://www.yippeesoft.com/blog/p/0306vprintftraceAssertdumpoutarg.php

回家后继续试验,发现是长度问题
 TRACE("123111111111111111111111111111111111111133333333333333333333333333334444444444444444444444444444444444444444444444444444444444444444333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333ffffffffffffffffffffffffffffffffffffffffffffffffsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssgggggggggggggggggggggggggggggggggggggggggggggggggggggggggsssssssssssssssssssssssssssssssssssssssssssssssssssssss");

不过非常奇怪的是,即使我弄大数组,仍然不行,实在奇怪,找了找网上的资料,感觉和我的情况差不多,不过是日文,不大明白
出力可能なのは半角512文字まで!
 TRACEの定義で注目したいのが

 TCHAR szBuffer[512];

 の1文。512バイトしかバッファーを確保していないのでこれ以上の出力を行うことができない。実際に512バイト以上を表示しようとすると...

 // was there an error? was the expanded string too long?
 ASSERT(nBuf >= 0);

 この部分でアサーション・エラーが生じる。

制限をなくすには
#ifdef _DEBUG
 afxDump << szBuffer;
#endif

 を使えばいい。書式付にしたいなら以下のようにするだけ。
#ifdef _DEBUG
 CString strTrace;
 strTrace.Format("%d",10);
 afxDump << strTrace;
#endif

别的不明白,代码倒是明白,改为
 afxDump<<("123111111111111111111111111111111111111133333333333333333333333333334444444444444444444444444444444444444444444444444444444444444444333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333ffffffffffffffffffffffffffffffffffffffffffffffffsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssgggggggggggggggggggggggggggggggggggggggggggggggggggggggggsssssssssssssssssssssssssssssssssssssssssssssssssssssss");

运行正常,看看

TRACE  使用TRACE宏显示或者打印调试信息。TRACE是通过函数AfxTrace实现的。由于AfxTrace函数使用了cdecl调用约定,故可以接受个数不定的参数,如同printf函数一样。它的定义和实现如下:
我本来也想用 直接 TRACE format,ap 估计当时也是报这种错误

extern AFX_DATA CDumpContext afxDump

历史博文

标签:, , , , , , , ,
七月 6, 2006 at 9:57 下午 by yippee 1,026 次
Category: Dev
Tags: , , , , , , , ,