使用控制台输入的Eclipse调试
Eclipse debugging with input from console
我正在尝试使用Eclipse调试我用c++编写的程序。程序包括从用户处获取输入,但是当我将输入输入到控制台时,它不会继续运行代码(它会继续请求输入)。我不能调试没有解决这个问题,并将感谢一些帮助。谢谢你。
代码在while循环中卡住了:
int main(int argc, const char**argv) {
FILE* inputFile = NULL;
setlocale(LC_ALL, "");
if(argc == 2){
inputFile = fopen(argv[1], "r");
if (inputFile == NULL){
printf("Problem opening file %s, make sure correct path name is given.n", argv[1]);
return 0;
}
}
else {
inputFile = stdin;
}
char buffer[MAX_STRING_INPUT_SIZE];
// Reading commands
while ( fgets(buffer, MAX_STRING_INPUT_SIZE, inputFile) != NULL ) {
fflush(stdout);
if ( parser(buffer) == error ){
printf("ERRORn");
break;
}
};
fclose(inputFile);
return 0;
}
问题来自于Eclipse缓冲控制台输入。修复它的一种方法是强制Eclipse使用Windows/DOS本机控制台进行调试。
这里详细描述了该过程,但简单地说:
- 从Eclipse菜单中创建您的Hello World c++命令行项目
- 在你的项目文件夹中,创建一个"。Gdbinit"文本文件。它将包含您的gdb调试器配置
- 编辑"。gdbinit",并添加以下行(不带引号):"set new-console on"
- 在Eclipse中,转到菜单Run>"Debug Configurations",并在左侧窗格中选择您的应用程序名称 在"调试器"选项卡中,确保"GDB命令文件"现在指向«.gdbinit»文件。否则,输入路径到你的。gdbinit"配置文件点击«应用»和«调试»。你完成了!应该启动一个本地DOS命令行。
我知道Eclipse控制台缓冲区并不总是像它应该的那样工作-以我的经验,当使用C或c++时,这是最糟糕的。
如果您想在Eclipse中运行编译后的代码,这将对有很大帮助,但是不能消除在Eclipse中可能遇到的显示问题:
setvbuf(stdout, NULL, 0, _IONBF);
然而,我不知道这在使用stdin
时如何影响Eclipse中的调试。你的最佳选择是使用Nicolas的答案来运行DOS控制台。我相信还需要再做一点工作,但已经足够了。
相关文章:
- C++ - 调试和运行时 Eclipse 行为不同
- Eclipse-C++-调试器立即终止
- Eclipse 中的 Makefile 项目可以运行,但不能调试,为什么?
- SCANF 在 Eclipse 中不接受调试模式下的输入?
- Eclipse调试错误:没有此类文件或目录 n
- 如何在Eclipse调试器中更改C++字符串值
- Eclipse C++ 调试器不会在断点处停止,而是在调试启动后立即终止
- Eclipse 调试未按预期工作
- 使用 Eclipse 调试 JNI/C++ 库和进程
- Mac C/C++Eclipse调试器挂起
- Chromium用于android eclipse调试/DDD用于Chromium C++调试
- 列表,迭代器定义只在Eclipse调试器中进行分段
- Eclipse c++调试器不显示变量值
- 如何使用Eclipse调试Android上的c++代码
- Eclipse c++调试可执行文件没有找到具有相对路径的文件
- 在Eclipse调试C++中探索复杂类型的变量
- 使用 Eclipse 调试 JavaScript
- Eclipse调试MinGW:执行MI命令失败
- 使用控制台输入的Eclipse调试
- Eclipse 调试器:".settings does not exist"错误