如何配置 CLion 标准控制台输出?

How do I configure CLion standard console output?

问题: CLion 不会出于调试目的输出任何控制台输出。

我将 CLion 与 MingW 编译器和 cmake 结合使用。不管我是否使用:

std::cout << "Testing" << std::endl;

或者:

printf("Testing");

我没有看到任何控制台输出。

解决尝试次数:

1: 我检查了 "Run"、"Debug"、"Terminal" 和 "Cmake"。我试图编辑我的配置,但 "Debug" 没有出现。

2: 接下来,我转到 Settings->Build,Execution,Deployment->CMake 来编辑生成类型。我添加了 Debug 和 RelWithDebInfo,但仍然无济于事。

3: 我也尝试将“-Debug”添加到 Cmake,但我仍然没有输出。

4: 我收到的最接近调试的东西是使用 GDB 在断点处查看变量值。这仅适用于 "RelWithDebInfo" 代。

解法:

我最终弄清楚了问题所在。

我正在 Windows 上的 CLion 中开发 Qt GUI 应用程序。您必须为要打印到的控制台输出指定一个控制台。

尽早在主程序中调用此 Console() 函数以打开控制台提示。现在,每当你 运行

QDebug() << <string>; 

std::cout << <string> std::endl;

您将看到您的调试语句。希望这可以帮助遇到同样问题的其他人。

代码:

void Console()
{
    AllocConsole();
    FILE *pFileCon = NULL;
    pFileCon = freopen("CONOUT$", "w", stdout);

    COORD coordInfo;
    coordInfo.X = 130;
    coordInfo.Y = 9000;

    SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coordInfo);
    SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE),ENABLE_QUICK_EDIT_MODE| ENABLE_EXTENDED_FLAGS);
}

来源:

我在这里找到了解决方案: [0] Console output in a Qt GUI app?

有一个不需要添加任何代码的更简单的解决方案。只需在调试配置中添加以下环境变量:

QT_ASSUME_STDERR_HAS_CONSOLE=1

有了这个,当使用调试器启动时,CLion 显示 QDebug 和 QML 的 console.*()