我在哪里可以看到 mfc 应用程序中的 printf 输出?

Posted

技术标签:

【中文标题】我在哪里可以看到 mfc 应用程序中的 printf 输出?【英文标题】:Where can I see printf output in an mfc applcation? 【发布时间】:2010-06-29 19:54:30 【问题描述】:

在调试期间,

我可以在调试器中查看“控制台”窗口吗?

(Visual Studio C++ 6.0)

谢谢。

【问题讨论】:

***.com/questions/3009042/… 【参考方案1】:

如果您使用 API OutputDebugString,您输出的字符串将出现在 Visual C 输出窗口中(在调试模式下)。在发布模式下,您需要一个单独的应用程序来捕获它们,例如 DBWIN32.EXE

使用单独的应用程序的好处是,您可以将多个应用程序的调试输出序列化到一个窗口中,这对于调试某些场景非常方便。

当然,缺点是您可以从其他应用程序(与您自己的应用程序无关)出现的调试输出,因为他们忘记在发布版本中标记他们的调试。 TRACE 会自动执行此操作,但当然,在某些情况下您可能希望获得发布版本中的输出。我更喜欢负责,所以我将 wsprintf/sprintf 转换为一个字符串,使用 OutputDebugString,并为自己保留该控制权。

【讨论】:

【参考方案2】:

我曾经使用 TRACE 系列宏 TRACE0, TRACE1,...等 它们的行为类似于 printf。 0, 1, 2,... 等足以指定宏可以采用的参数数量(printf 使用 va_list 打开参数数量)

【讨论】:

【参考方案3】:

这样做是这样的:

// for OutputDebugString
#include "Windows.h"

// ...

// fill in the message
char message[2000];

// fill in the variables
int var1 = ...;
int var2 = ...;

// fill in the message string and output it
sprintf(message, "... format %d,%d", var1, var2);
OutputDebugString((LPCSTR)message);

它应该出现在输出窗口中。 (需要转换成LPCSTR。)

【讨论】:

以上是关于我在哪里可以看到 mfc 应用程序中的 printf 输出?的主要内容,如果未能解决你的问题,请参考以下文章

在哪里可以在 MFC 应用程序中定义全局变量?

我在哪里可以看到 MYSQL 中的过程? [复制]

我在哪里可以放我的 MFC 控件初始化代码

MFC 中的消息循环

我在哪里可以获得有关 ODBC 和 Access 数据库的高质量信息?

我在哪里可以看到Google App Engine中的日志?