7 对被调试的程序进行I/O操作

如果被调试的程序需要读取终端用户输入,我们推荐用户在终端中启动被调试程序,然后在另一个终端使用CGDB去attach被调试程序,这是与被调试程序进行I/O交互最简单的方法。

然而如果用户希望能直接在CGDB内对被调试程序进行输入,CGDB也提供了这样的机制。下述的方法在Windows下编译的GDB上是不可行的。在Cygwin中运行的GDB上或许可以运行。

这个方法和进入/退出GDB模式的方法相似。在缺省的情况下,tty窗口是不可见的。这是因为用户仅在想要与被调试程序进行I/O操作时才会需要用到这个窗口。在命令模式下按 T 键可以显示这个窗口。在按下 T 键之后,你会发现在代码窗口和gdb窗口中间出现了一个新的窗口。它叫做tty窗口。同时您也会看见一个新的状态栏,叫作tty状态栏。在您键入 T 之后,tty状态栏上会显示出一个 ‘’ 键。这是因为当键入 T 键,这个窗口被打开时,CGDB会自动将用户置入TTY模式。想要退出这个模式可以键入CGDB模式切换键(默认为ESC键)。这将会让您进入命令模式。可以通过在命令模式下键入 T* 键打开和隐藏tty窗口。

tty窗口被打开后,用户可以键入 I 命令进入TTY模式。用户可以在TTY模式下键入cgdb模式切换键退出到命令模式。

当tty窗口打开时,所有从程序输出的数据将会被显示在那里。任何在tty窗口被输入的数据将会被传输到被调试的程序中。这些数据将不会被送到GDB。当tty窗口关闭时,所有的输出将会通过GDB窗口显示出来,同时也会在tty窗口被输出(这样在tty窗口后来被打开时就可以看到之前的程序输出)。

如果用户希望为被调试程序获取一个新的tty窗口,可以键入Ctrl - T。这将会清空被调试程序的输入缓冲区中的所有数据。这个功能也许会在您重新运行被调试程序的时候有帮助。