【问题标题】:can't debug small program on eclipse helios cdt using mingw/gdb under windows, console freezeswindows下使用mingw/gdb无法调试eclipse helios cdt上的小程序,控制台死机
【发布时间】:2011-08-25 15:58:39
【问题描述】:

我一直在尝试使用 Eclipse CDT 来做一些 c++ 示例,我可以使用 run 命令很好地运行它们,但是每当我尝试调试时,控制台窗口就会冻结,我可以输入,但是程序无法继续。

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

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;
}

我的路径变量:
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 下调试这个小例子,没有问题?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      我建议尝试不同的 Create Process Launcher。可以通过以下方式更改:

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

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

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

      4. 现在转到“调试配置”窗口中的调试器选项卡,选择调试器,例如“MinGW gdb”并点击应用。

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

      【讨论】:

      • 谢谢 - 这也是我在 linux 上遇到的问题,当我尝试使用 gdb + eclipse 调试 mozilla 时。
      【解决方案3】:

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

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

      【讨论】:

      • 我现在走得更远了,我认为这是 Windows 控制台没有弹出的问题。我现在正在看codelite,似乎在调试方面表现更好。
      猜你喜欢
      • 2013-12-23
      • 2013-11-20
      • 2011-03-20
      • 1970-01-01
      • 2015-04-06
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 2011-03-27
      相关资源
      最近更新 更多