使用控制台输入进行Eclipse调试

Sho*_*kie 4 c++ eclipse debugging

我正在尝试使用Eclipse调试我用C++编写的程序.该程序包括从用户获取输入,但当我输入控制台的输入时,它将不会继续运行代码(它将继续要求输入).我不能在没有修复这个问题的情 谢谢.

代码卡在while循环fgets上:

int main(int argc, const char**argv) {
    FILE* inputFile = NULL;

    setlocale(LC_ALL, "");
    if(argc == 2){
        inputFile = fopen(argv[1], "r");
        if (inputFile == NULL){
            printf("Problem opening file %s, make sure correct path name is given.\n", argv[1]);
            return 0;
        }
    }
    else {
        inputFile = stdin;
    }

    char buffer[MAX_STRING_INPUT_SIZE];
    // Reading commands
    while ( fgets(buffer, MAX_STRING_INPUT_SIZE, inputFile) != NULL ) {
        fflush(stdout);
        if ( parser(buffer) == error ){
            printf("ERROR\n");
            break;
        }
    };
    fclose(inputFile);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*set 7

问题来自Eclipse缓冲控制台输入.修复它的一种方法是使用Windows/DOS本机控制台强制Eclipse进行调试.

这里详细介绍了该过程,但简要说明:

  1. 从Eclipse菜单File> New> C++ Project创建Hello World C++命令行项目
  2. 在项目文件夹中,创建".gdbinit"文本文件.它将包含您的gdb调试器配置
  3. 编辑".gdbinit",并添加以下行(不带引号):"set new-console on"
  4. 在Eclipse中,转到菜单Run>"Debug Configurations",然后在左窗格中选择您的应用程序名称
  5. 在"调试器"选项卡中,确保"GDB命令文件"现在指向«.gdbinit»文件.否则,输入".gdbinit"配置文件的路径
  6. 单击"应用"和"调试".你完成了 !应启动本机DOS命令行.