【问题标题】:Program input (cin or getline) is read in correct when running but not when debugging程序输入(cin 或 getline)在运行时正确读取,但在调试时不正确
【发布时间】:2017-04-10 00:08:02
【问题描述】:

我在尝试使用来自 cin 和/或 getline 的输入来调试 C++ 时遇到问题。当我运行而不是调试时,它可以完美运行。我在带有 MinGW 编译器/调试器(64 位)的 Windows 8.1 中使用 Eclipse neon CDT。运行示例程序以隔离使用 getline 进行输入并提取第一个字符进行比较的问题:

while (true) {
  cout << "Enter x to exit: ";
  getline(cin, input);
  myChar = input[0];
  if (myChar=='x') {
    break;
  }

  cout << "You entered: " <<myChar<<endl;
}
cout <<"Exiting..."<<endl;

当我运行它时 - 它运行良好。但是,当我尝试调试时,它要么 a) 不等待输入并自行生成,要么 b) 忽略我的输入并自行生成。在不同的项目中进行实验时,我已经看到了这两种情况。

我想也许我需要确保它将字符读取为 UTF-8。但我发现的设置似乎是针对文本编辑器或文本文件(Window->Preferences->General->Workspace)...而不是控制台。

我了解到控制台输入有时会出现问题,并尝试使用本机 Windows 控制台而不是 IDE 集成控制台,如下所述: http://nicolas.riousset.com/eclipse-how-to-debug-a-c-console-application-using-a-native-dos-console-instead-of-the-ide-integrated-one/

不幸的是,我在尝试启动调试器时遇到了错误:

最终启动序列中的错误 无法执行 MI 命令:记录来自调试器后端的错误消息:进程记录:当前架构不支持记录功能。流程记录:当前架构不支持记录功能。

【问题讨论】:

    标签: debugging console mingw eclipse-cdt


    【解决方案1】:

    不幸的是,我在尝试启动调试器时遇到了错误:

    最终启动序列中的错误 无法执行 MI 命令:记录来自调试器后端的错误消息:进程记录:当前架构不支持记录功能。流程记录:当前架构不支持记录功能。

    听起来你遇到了bug in Eclipse Neon。

    该错误已在 Neon.1 更新中修复。如果您download the latest version of Eclipse(撰写本文时为 Neon.3),它将包含修复程序。

    【讨论】:

    • 不幸的是,它不是 - 已经在运行 neon.3。上周六刚下载的。 CDT 版本为 9.2.1
    • @GuitarGirl:很有趣。我会鼓励你file a bug report。
    猜你喜欢
    • 2011-01-13
    • 2017-12-03
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多