【问题标题】:CLion won't show output in DebugCLion 不会在调试中显示输出
【发布时间】:2020-02-07 19:34:18
【问题描述】:

当我启动程序时,这是输出:

-------------------- HASHMAP MANAGEMENT BOOT MENU -------------------------
Would you like to:
(a) create a new hashmap
(b) load an existing one
(q) exit
>

但是,在调试时,这些都没有出现。检查调试,它确实检查了 printf() 命令,但它只是拒绝让它们出现在控制台中。输入寄存器,但输出永远不会到来。

int main(void){
    bool on = true;
    char choice = ' ';
    int status = 0;
    while(on){
        if(status == -1){
            printf("\n[ERROR] : HASHMAP NOT INITIALISED\n");
        }
        printf("\n-------------------- HASHMAP MANAGEMENT BOOT MENU -------------------------\n");
        printf("Would you like to:\n(a) create a new hashmap\n(b) load an existing one\n(q) exit\n> ");

        scanf("%c",&choice);
        ...
        ...
    }
}

这就是代码的开头,不包括所有#includes。此外,出于某种原因,CLion 说我正在构建的代码是task2-a.c | Debug,如果这有帮助的话。 task2-a.c 是正在构建的 C 文件的名称。不知道怎么回事……

更新:调试在 Ubuntu 17.04 Clion 2017.2 上运行良好。它只是不适用于 Windows 10 CLion 2017.3。

【问题讨论】:

    标签: c debugging clion


    【解决方案1】:

    在任何 printf 语句或任何输出发生之前放置 setbuf(stdout, 0); 可以解决此问题。

    【讨论】:

    • Windows 上的标准输出缓冲确实存在问题,我们知道 (intellij-support.jetbrains.com/hc/en-us/community/posts/…)。感谢您在此处发布解决方法!
    • @EldarAbusalimov 似乎问题在 CLion 2019.3 中仍然存在;附带说明一下,setbuf 已被弃用,因此任何人都应该改用setvbuf
    • 视情况而定。 setbuf 似乎还在工作。它工作得很好。
    • 像这样使用 setvbuf:setvbuf(stdout, NULL, _IONBF, 0);
    【解决方案2】:

    如果您不想使用内置的 clion 控制台,可以通过更改 clion 使用的默认调试器来解决问题。

    Settings => Toolchain => <your compiler> => Debugger 下将 Bundled GDB 更改为编译器的调试器,例如明威:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 2015-12-20
      相关资源
      最近更新 更多