0

这是我尝试使用 cgdb 调试的非常简单的程序。问题是,一旦我到达“scanf”行,它就会提示输入,但是一旦我在输入输入后按下回车(下例​​中的 2),它似乎进入了一个无限循环。但它在 gdb 中运行良好。

#include <cstdio>
using namespace std;

int main()
{
    int n;
    scanf("%d", &n);
    printf("%d\n", n);
    return 0;
}

这是终端中的执行跟踪:

键入“apropos word”以搜索与“word”相关的命令...从测试中读取符号...完成。

(gdb) 开始

0x400585 处的临时断点 1:文件 test.cpp,第 7 行。启动程序:/home/Alex/Desktop/test

临时断点1,main() at test.cpp:7

(gdb) 下一个

2(这是我的输入)

无限循环从这里开始。

4

1 回答 1

1

根据 cgdb 的信息页面,您需要:

  • 在一个终端上启动程序,并从另一个终端用 CGDB 附加到它
  • 或使用 tty 窗口传递参数

要调用 tty 窗口,请在命令模式下按“T”(转义)

从信息页面中提取:

向正在调试的程序发送 I/O

这种技术类似于进出“GDB 模式”。默认情况下,tty 窗口是不可见的。这是因为只有当用户希望向正在调试的程序发送数据时才需要它。要显示 tty 窗口,请在命令模式下按“T”。

于 2015-09-22T13:58:14.280 回答