调试时QtCreator的标准输出在哪里?

时间:2015-03-12 08:54:48

标签: qt-creator windbg

我在使用QtCreator调试CMake(非qt)项目时已经意识到以下情况(由于Qt而不使用它,但因为它是一个不错的IDE)和CDB。

该程序有一个简单的cout代码行,当我使用Ctrl+R运行程序时,该代码行在“应用程序输出”窗格中正确显示。但是,如果我使用F5调试相同的构建和运行配置,我看不到任何输出。 在第二种情况下,QtCreator将stdout转发到哪里?

3 个答案:

答案 0 :(得分:3)

您可以看到调试日志上打印的输出,这是Window-> Views-> Debugger Log

下的窗格

右侧窗格显示预期输出。不是一个完整的解决方案,而是一个非常接近的解决方法。

我相信qt creator只能看到来自cdb的输出,并且它不会转发程序的输出,而只会转发它自己的输出。实际上,应用程序输出窗格显示了一行与我在程序中进行的系统调用相关的cdb输出。

这种解决方法会产生奇怪的副作用。当cdb遇到断点时,该窗格的colorscheme将重置为默认值。

在旁注中,有closed bug报告说明

  

旧的调试引擎有一个区别   printf() - 控制台应用程序的输出被抑制   Qt Creator构建的调试/控制台构建。在以前的版本中,   用于进入终端Qt Creator的输出已经启动。

在我的情况下不正确,因为从cmd启动qtcreator从cmd分离。

答案 1 :(得分:0)

尝试在std::endl末尾使用std::flushcout(如果您不想更改行),例如std::cout << "Hello" << std::endl;

答案 2 :(得分:0)

在 Windows 中,OutputDebugString() 转到“应用程序输出”窗口。

您可以通过添加自己的 Message 函数来过滤噪音:

https://doc.qt.io/qt-6/qtglobal.html#qInstallMessageHandler