无法调试eclipse helios cdt上的小程序使用windows下的mingw / gdb,控制台冻结

时间:2011-05-14 20:29:12

标签: c++ windows-xp gdb eclipse-cdt

我一直在尝试使用Eclipse CDT做一些c ++示例,我可以使用run命令运行它们,但每当我尝试调试时,控制台窗口会冻结,我可以输入,但是该计划不会继续。

当我调试时,我在控制台窗口上得到以下输出(没有断点,但由于默认设置而在主要时断开):

Hello, world
put your name: 15^running

当我输入内容并按 enter 时,“继续”按钮被禁用,并且不执行任何操作。 15是随机数,有时是16,20等。

如果我在eclipse下运行程序,我会得到输入提示:

Hello, world
put your name: test
Hello test

这是我尝试调试的代码:

#include <iostream>
#include <string>

int main() {
    std::cout << "Hello, world" << std::endl;
    std::string name;
    std::cout << "put your name: ";
    std::cin >> name;
    std::cout << "Hello " + name << std::endl;
    return 0;
}

我的路径var:
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\Program Files\Java\jdk1.6.0_14\bin;C:\MinGW\bin

Eclipse版本:Helios Service Release 2
CDT版本:7.0.2
操作系统:windows xp
GDB版本:GNU gdb(GDB)7.2

如何在没有问题的情况下在CDT下调试这个小例子?

3 个答案:

答案 0 :(得分:12)

15^running看起来是来自gdb的Machine Interface的结果记录。通常它不应出现在Eclipse控制台中。

我建议您尝试使用其他Create Process Launcher。它可以通过以下方式更改:

  1. 在主菜单中选择“运行” - &gt; “调试配置......”。

  2. 在下面显示的打开的“调试配置”窗口中,单击“使用GDB(DSF)创建处理启动器”对话框中的“选择其他...”。

    enter image description here

  3. 在打开的“选择首选启动器”窗口中,选中“使用配置特定设置”,在下面的列表中选择“标准创建处理启动器”,然后单击“确定”。

    enter image description here

  4. 现在转到“Debug Configurations”窗口中的Debugger选项卡,选择debugger,例如“MinGW gdb”并单击“应用”。

    enter image description here

  5. 使用标准创建过程启动器,我可以调试你的程序,虽然“输入你的名字:”只有在我输入内容后才打印并按Enter键,因为输出流没有被刷新。

答案 1 :(得分:1)

尝试查看此http://www.cprogramming.com/gdbtutorial.html,看看是否有帮助。你可以按CTRL-C打破吗?

同样Cannot enter input with gdb. Help!可能是一个指针,虽然与苹果有关。

答案 2 :(得分:0)

以下内容来自Eclipse网站的常见问题解答:

http://wiki.eclipse.org/CDT/User/FAQ#Eclipse_console_does_not_show_output_on_Windows

  

Eclipse控制台在Windows上不显示输出在Eclipse CDT中   Windows,正在运行或调试的程序的标准输出是完全的   缓冲,因为它没有连接到Windwos控制台,而是连接到   管。有关更多详细信息,请参阅错误173732。之后添加fflush调用   每个printf或在main的开头添加以下行   功能:

setvbuf(stdout, NULL, _IONBF, 0);
setvbuf(stderr, NULL, _IONBF, 0);

似乎是Windows上的预期错误。