gpt4 book ai didi

eclipse 中的 c++ Debug模式导致程序不等待 cin

转载 作者:可可西里 更新时间:2023-11-01 14:13:23 28 4
gpt4 key购买 nike

以下代码在运行时工作正常,但在使用 Eclipse 以 Debug模式运行时出现问题,它不等待输入而是继续运行,并且一些看似随机的值会打印到控制台。它也不会在断点处停止。

int main() {

int N, Q, maxSize;
cout <<"Enter a number"<<endl;
int test;
cin >> test;
cout << test <<endl;
}

最佳答案

更新

从 CDT 9.4 (Eclipse Oxygen.2) 开始,启动配置中现在有一个复选框,可以通过单击来完成此操作。参见 https://wiki.eclipse.org/CDT/User/NewIn94#Debug

enter image description here


原始答案

这里的问题是同一个 stdin channel 上有两个读取器。当您执行 cin 时,Eclipse CDT 还会尝试读取用于 GDB-MI 通信的标准输入。

幸好有一个解决方法,您可以让 GDB 为正在运行的程序创建一个单独的控制台。这意味着不共享句柄。

为此,在项目的根目录中创建一个包含以下内容的 .gdbinit 文件:

set new-console on

然后在 Eclipse 中调试您的控制台应用程序到您满意的程度: example

更多信息

您可以在调试器 选项卡中设置 gdbinit 文件以用于您的调试配置。将 GDB 命令文件 设置为您创建的文件的名称。 debugger tab

您可以通过在 C/C++ -> Debug 中编辑首选项,将默认 GDB 命令文件设置为用于新创建的调试配置-> GDB 页面: GDB page

Eclipse CDT 不使用主目录中的 .gdbinit。这是有目的的,因为那里的 .gdbinit 通常是为 CLI 调试设置的,并且很容易干扰 Eclipse 与 GDB 正确通信所需的 MI 接口(interface)。

关于eclipse 中的 c++ Debug模式导致程序不等待 cin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44283534/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com