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

时间:2017-05-31 11:26:40

标签: c++ windows eclipse-cdt

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

int main() {

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

1 个答案:

答案 0 :(得分:4)

<强>更新

从CDT 9.4(Eclipse Oxygen.2)开始,启动配置中有一个复选框,只需单击一下即可完成此操作。见https://wiki.eclipse.org/CDT/User/NewIn94#Debug

enter image description here

原始回答

这里的问题是在同一个stdin频道上有两个读者。当你做cin时,Eclipse CDT也试图读取stdin以进行GDB-MI通信。

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

为此,请在项目的根目录中使用以下内容创建.gdbinit文件:

set new-console on

并在Eclipse中调试您的控制台应用程序,以满足您的需求: example

更多信息

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

您可以通过编辑 C / C ++ - &gt;中的首选项来设置默认 GDB命令文件以用于新创建的调试配置。 调试 - &gt; GDB 页面: GDB page

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

相关问题