首页 文章

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

提问于
浏览
14

我一直在尝试使用Eclipse CDT做一些c示例,我可以使用run命令运行它们,但每当我尝试调试时,控制台窗口冻结,我能够输入,但程序没有继续 .

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

Hello, world
put your name: 15^running

继续按钮被禁用,当我输入内容并按回车键时,它不会执行任何操作 . 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 回答

  • 1

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

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

    • 在主菜单中选择“运行” - >“调试配置...” .

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

    enter image description here

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

    enter image description here

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

    enter image description here

    使用标准创建过程启动器,我能够调试您的程序,虽然“输入您的名字:”仅在我输入内容后打印并按Enter键,因为输出流未刷新 .

  • 0

    试着看看这个http://www.cprogramming.com/gdbtutorial.html,看看是否有帮助 . 就像你可以按CTRL-C打破?

    尽管与苹果有关,Cannot enter input with gdb. Help!也可能是指针 .

  • 12

    以下内容来自Eclipse网站的FAQ:

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

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

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

    看起来像是Windows上的预期错误 .

相关问题