我在使用QtCreator调试CMake(非qt)项目时已经意识到以下情况(由于Qt而不使用它,但因为它是一个不错的IDE)和CDB。
该程序有一个简单的cout
代码行,当我使用Ctrl+R
运行程序时,该代码行在“应用程序输出”窗格中正确显示。但是,如果我使用F5
调试相同的构建和运行配置,我看不到任何输出。
在第二种情况下,QtCreator将stdout转发到哪里?
答案 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::flush
或cout
(如果您不想更改行),例如std::cout << "Hello" << std::endl;
答案 2 :(得分:0)
在 Windows 中,OutputDebugString()
转到“应用程序输出”窗口。
您可以通过添加自己的 Message 函数来过滤噪音: