【问题标题】:QT Creator Can't read from stdin in debuggerQT Creator 无法从调试器中的标准输入读取
【发布时间】:2020-12-24 19:52:51
【问题描述】:

我刚刚将 QT Creator 更新到 4.13.0,现在我在调试器中时无法从标准输入读取数据。

一些细节...

  • 我在 macOS 上运行。
  • 我正在编写 C++,但使用的是 C stdio 库。 (出于历史原因)
  • 我在 c++11 模式下使用 clang 15.5.0。
  • 我正在使用“从终端运行”调试器选项。

问题:尽我所能输入,当我的代码进入 fgets 时,它永远不会返回。

简化示例:

#include <stdio.h>

int main()
{
    char buf[1024];
    if (fgets(buf,1024, stdin)) // In debugger, this call never returns!
    {
        fprintf(stderr, "%s", buf);
    }

    return 0;
}

注意:当我在调试器之外运行时 - 没有问题。

有没有人遇到过这个并修复它?关于如何解决它的任何想法?

【问题讨论】:

  • Ubuntu 中的“在终端中运行”并非如此,因此问题似乎与特定控制台与 Qt Creator 的集成有关。
  • 通过寻找解决方法,我重新安装了 QTC 4.13,但问题仍然存在。我还安装在 Windows 和 Linux 虚拟机上。那里没问题。
  • 找到了解决方法。我没有从 QTC 运行程序,而是从命令行运行,并使用“调试”菜单选项“附加到正在运行的应用程序”或“附加到未说明的应用程序”。
  • 您能向 Qt 公司发布一个错误吗?我在拥有公司帐户时只做过几次,但相信个人也可以这样做:bugreports.qt.io/secure/Dashboard.jspa
  • 其实……我今天早上就这么做了。

标签: c++ c qt debugging


【解决方案1】:

可能是 QtCreator 中终端启动应用程序 openTerminal.py 的问题。

我遇到了类似的问题,在没有调试器的情况下以调试模式启动时,我的控制台应用程序的输出在终端会话中正确显示,但是当开始使用调试器时,所有系统输出和系统错误都被写入应用程序输出小部件制作无法从 std::in 读取任何值。

解决方案是: 管理套件:环境系统替换长路径“.../openTerminal.py” 通过“/Applications/Utilities/Terminal.app”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2014-11-20
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多