CLion no mostrará la salida en Debug

2 minutos de lectura

Avatar de usuario de ENBYSS
ENBYSS

Cuando inicio el programa, esta es la salida:

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

Sin embargo, al depurar, nada de esto aparece. Al verificar la depuración, revisa los comandos printf(), pero simplemente se niega a dejar que aparezcan en la consola. La entrada registra, pero la salida nunca llega.

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);
        ...
        ...
    }
}

Así queda el inicio del código, excluyendo todos los #includes. Además, por alguna razón, CLion dice que el código que estoy creando es task2-a.c | Debug si te sirve de ayuda task2-ac es el nombre del archivo C que se está construyendo. no se que pasa…

Actualización: la depuración funciona muy bien en Ubuntu 17.04 Clion 2017.2. Simplemente no funciona en Windows 10 CLion 2017.3.

Poniendo setbuf(stdout, 0); antes de que ocurra cualquier instrucción printf o cualquier salida, se solucionó este problema.

  • De hecho, hay un problema con el almacenamiento en búfer de salida estándar en Windows, somos conscientes de ello (intellij-support.jetbrains.com/hc/en-us/community/posts/…). ¡Gracias por publicar la solución aquí!

    – Eldar Abusalimov

    14 de diciembre de 2017 a las 9:46

  • @EldarAbusalimov Parece que el problema aún existe en CLion 2019.3; Como nota al margen, setbuf está en desuso, por lo que cualquiera debería usar setvbuf en cambio.

    – Matzé

    20 de enero de 2020 a las 15:38

  • depende. setbuf parece estar funcionando todavía. y está funcionando bien.

    – Oleg Kokorin

    5 de mayo de 2021 a las 12:07

  • usa setvbuf así: setvbuf(stdout, NULL, _IONBF, 0);

    – Mattwmaster58

    16/09/2021 a las 20:10

Si no desea utilizar la consola integrada de clion, puede resolver el problema cambiando el depurador predeterminado utilizado por clion.

Por debajo Settings => Toolchain => <your compiler> => Debugger cambie GDB incluido al depurador de su compilador, por ejemplo, MinGW:
Configuración de Clion

¿Ha sido útil esta solución?