我一直在尝试使用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下调试这个小例子?
答案 0 :(得分:12)
15^running
看起来是来自gdb的Machine Interface的结果记录。通常它不应出现在Eclipse控制台中。
我建议您尝试使用其他Create Process Launcher。它可以通过以下方式更改:
在主菜单中选择“运行” - &gt; “调试配置......”。
在下面显示的打开的“调试配置”窗口中,单击“使用GDB(DSF)创建处理启动器”对话框中的“选择其他...”。
在打开的“选择首选启动器”窗口中,选中“使用配置特定设置”,在下面的列表中选择“标准创建处理启动器”,然后单击“确定”。
现在转到“Debug Configurations”窗口中的Debugger选项卡,选择debugger,例如“MinGW gdb”并单击“应用”。
使用标准创建过程启动器,我可以调试你的程序,虽然“输入你的名字:”只有在我输入内容后才打印并按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上的预期错误。