繁体   English   中英

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

[英]can't debug small program on eclipse helios cdt using mingw/gdb under windows, console freezes

我一直在尝试使用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下调试这个小例子而没有问题?

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

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

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

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

    在此输入图像描述

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

    在此输入图像描述

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

    在此输入图像描述

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

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

无法使用gdb输入输入。 救命! 可能是指针虽然与苹果有关。

以下内容来自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上的预期错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM