在使用带有CDB调试器的Win7上的QtCreator 2.8时,我无法在“应用程序输出”选项卡中看到所有的fprintf(stdout)消息!?
我尝试过:
fprintf(stderr, "...");
fprintf(stdout, "..."); fflush(stdout);
什么都没有发生。 与此同时,如果我勾选“在终端中运行”选项,它就有效了!?
尽管我注意到所有输出都会记录到调试器日志中!?
有任何想法吗?
在使用带有CDB调试器的Win7上的QtCreator 2.8时,我无法在“应用程序输出”选项卡中看到所有的fprintf(stdout)消息!?
我尝试过:
fprintf(stderr, "...");
fprintf(stdout, "..."); fflush(stdout);
什么都没有发生。 与此同时,如果我勾选“在终端中运行”选项,它就有效了!?
尽管我注意到所有输出都会记录到调试器日志中!?
有任何想法吗?
这不是一个答案,只是一条评论,明显这是一个“特性”,不会被修复。
我刚开始将一个在Linux下使用GCC和Clang,在Windows 7下使用MinGW GCC开发的C++/Qt项目移植到了Windows 10上,并使用MSVC进行编译。如果我的测试代码作为单独的程序运行,它会向控制台(std::cout)报告“所有测试通过”(或未通过),在这种情况下,控制台是Qt Creator应用程序输出窗口。多年来,它在所有系统、所有编译器以及调试和发布模式下都能正常工作。但现在,当通过调试器运行时,它不会写入应用程序输出窗口,只有在像发布版本一样运行时才会。
在发现这个问题后(2021-04-16),我在谷歌上搜索解决方案,并最终来到了这里。
我知道这个答案并没有回答原问题,但是当我们搜索“无应用程序输出”时,我们找到了这个答案...
请参考以下答案:https://stackoverflow.com/a/26325743/808101。
这仅适用于qDebug()和类似函数(而不是直接输出到stdout/stderr)。
在我的情况下,我必须在QtCreator中设置QT_ASSUME_STDERR_HAS_CONSOLE
环境变量为1
,才能在“应用程序输出”窗口中看到qDebug()消息。对于旧版本的Qt,请参考链接的旧/弃用环境变量。
我经常这样使用qDebug。
#include <QDebug> in the top of the file
使用方法:
qDebug() << "This is a Test";
在使用QT Creator时,它可以很好地运行,无论是GUI编程还是控制台应用程序都没有问题。