如何在发布模式下启用TRACE宏?

Ash*_*ppa 11 macros mfc trace

TRACE宏当代码被编译可用于输出诊断消息到调试器的调试模式.在发布模式下,我需要相同的消息.有没有办法实现这个目标?

(请不要浪费你的时间讨论为什么我不应该在发布模式使用TRACE :-)

Fer*_*cio 8

实际上,TRACE宏比OutputDebugString更灵活.它采用printf()样式格式字符串和参数列表,而OutputDebugString只接受一个字符串.为了在发布模式下实现完整的TRACE功能,您需要执行以下操作:

void trace(const char* format, ...)
{
   char buffer[1000];

   va_list argptr;
   va_start(argptr, format);
   wvsprintf(buffer, format, argptr);
   va_end(argptr);

   OutputDebugString(buffer);
}
Run Code Online (Sandbox Code Playgroud)

  • 我知道这只是一个例子,但在这个例子中有一个巨大的缓冲区溢出潜力. (4认同)