使用Visual Studio 2008,我在输出窗口中不断看到此错误:



我的代码中散布着许多TRACE宏,这些宏用于转储有关错误状况的信息:文件路径,行号,错误等。我需要跟踪此错误的来源,因为它可能是它试图转储的信息到输出窗口太长。 TRACE宏可以接受的最大字符串长度是多少?这是我通常如何使用此宏的示例:

TRACE(_T("CreateNotifyWindow : Failed to create handle for notify window thread.\r\n\tError: %d\r\n\tFile: %s\r\n\tLine: %d\r\n"), ::GetLastError(), _T(__FILE__), __LINE__);

任何想法将不胜感激。谢谢。

最佳答案

最终,我敢打赌,问题是将对象字符串而不是string.c_str()传递给了宏。 TRACE使用可变参数传递给最终调用vsnprintf()系列中某些内容的对象,以便进行%s处理。它不能处理对象,因为C不能。

根据实现,OutputDebugString的最大长度为4K bytes minus a fraction

09-10 04:09
查看更多