VC++ TRACE Bug Trace所能接收的数据长度不能大于508字符
2010-12-02 22:46
393 查看
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!!!!!
在做调试信息输出的时候一定找注意判断,不然程序就崩溃了!
今天在做调试的时候总是在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!!!!!
在做调试信息输出的时候一定找注意判断,不然程序就崩溃了!
相关文章推荐
- VC++ TRACE Bug Trace所能接收的数据长度不能大于508字符
- 如何处理Oledb中EXCEL驱动读取EXCEL文件中字段长度大于255字符时出现的"数据截断"问题.
- 处理EXCEL驱动读取EXCEL文件中字段长度大于255字符时出现的数据截断
- 如何处理ODBC中EXCEL驱动读取EXCEL文件中字段长度大于255字符时出现的"数据截断"问题.
- 高效率的C#截取指定长度字符串,大于指定长度的,在末尾显示指定字符,默认为"..."
- 练习1-17 编写一个程序,打印长度大于80个字符的所有输入行。
- JS限制字符长度及特殊符号不能输入
- scanf("%c", &c);这句不能正常接收字符的原因。(附strindex的实现程序)
- warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失.
- warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
- jQuery在异步请求数据返回后,调用$("selector").html(data.content);之后因为一些特殊字符或者',"不能显示内容的问题解决办法
- SAS9 IT BUG?-以表单方式传送数据时,SAS接收可能异常
- linux串口特殊字符不能接收
- 从键盘接收字符类型的数据并实现剪刀石头布的规则
- 转载: 对GPS全球定位系统定位信息的接收以及对各定位参数数据的提取方法(VC++)
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 原创---tcp udp: send一次发送数据长度大于recv size_t len时,windows、linux下不同返回
- 高效率的C#截取指定长度字符串,大于指定长度的,在末尾显示指定字符,默认为"..."
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- STM32+cubeMX+DMA+USART 接收任意长度的数据