TRACE 是VC++下强大的打印调试函数
今天在做调试的时候总是在TRACE处 ASSERT
后来做了一个小测试
char str[508];
TRACE(str);
正常TRACE
char str[509];
TRACE(str);
ASSERT 弹出断言
错误出在 dumpout.cpp中
nBuf = _vsntprintf(szBuffer, _countof(szBuffer), lpszFormat, args);//这一行返回-1
// was there an error? was the expanded string too long?
ASSERT(nBuf >= 0);//运行到这个断言,上一行好是微软自己的注释
看来这里是存在一个Bug的,TRACE函数是有长度限制的,使用的时候要小心.
通过二分法反复测试找到了如上的上限508个char!!!!!
在做调试信息输出的时候一定找注意判断,不然程序就崩溃了!