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

Posted

技术标签:

【中文标题】windows下使用mingw/gdb无法调试eclipse helios cdt上的小程序,控制台死机【英文标题】:can't debug small program on eclipse helios cdt using mingw/gdb under windows, console freezes 【发布时间】: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 下调试这个小例子,没有问题?

【问题讨论】:

【参考方案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。可以通过以下方式更改:

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

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

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

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

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

【讨论】:

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

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

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

【讨论】:

我现在走得更远了,我认为这是 Windows 控制台没有弹出的问题。我现在正在看codelite,似乎在调试方面表现更好。

以上是关于windows下使用mingw/gdb无法调试eclipse helios cdt上的小程序,控制台死机的主要内容,如果未能解决你的问题,请参考以下文章

C/C++ - Codeblocks 调试 MinGW GDB STL (查看容器数据)配置教程(完整版)

使用 Amazon Web Services (EC2) 和 c# Windows Service/WCF 进行远程调试

aws ecs 控制台运行任务时出现错误“无法运行任务”,如何调试/找到真正的错误

关于windows下创建cocos2d lua工程 无法断点调试 relative (file not exist) 的问题

无法连接到端口 8080 上的 EC2 Windows 实例

[日常] windows下使用vscode配合xebug调试php脚本