This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: MI testsuite improvements
- From: "Alain Magloire" <alain at qnx dot com>
- To: cagney at gnu dot org (Andrew Cagney)
- Cc: bob at brasko dot net (Bob Rossi), alain at qnx dot com (Alain Magloire), nickrob at snap dot net dot nz (Nick Roberts), gdb-patches at sources dot redhat dot com
- Date: Tue, 22 Feb 2005 11:35:24 -0500 (EST)
- Subject: Re: MI testsuite improvements
> > Hi Alain,
> >
Bonjour,
> > There are 2 different ideas being suggested,
> > - To create an mi command, that does the same thing as the console
> > 'tty' command, and each of these internally can be wrappers around
> > some data that can be accessed with GDB's set/show mechanism. For
> > example,
> > -mi-set-tty /dev/pts/1 (mi command)
> > tty /dev/pts/1 (console command)
> > set tty /dev/pts/1 (set command)
>
> and I belive:
> set tty
> I need to confirm it but it appears that there's an ``optional
> filename'' class of variable (grep for filename_completer in the sources).
>
> If the last is implemented, an existing MI command should already let
> you set/show the variable.
Ok, so far.
> > - The second idea was to have GDB internally create a pty. That would
> > result in a master and slave side. Neither of these are important,
> > AFAIK, only the slavename (file name of the terminal created,
> > ie. /dev/pts/1) is important. For example, here is what could
> > happen
> > 1. The user asks GDB to open a new pty and the name is given back
> > -mi-create-pty
> > /dev/pts/1
> > 2. The user asks GDB to use that pty for the inferior
> > -mi-set-tty /dev/pts/1
> > 3. The user opens /dev/pts/1 in there own program to read the
> > output of the inferior.
> > 4. The user asks GDB to close the device
> > -mi-destroy-pty /dev/pts/1
> >
> > Either way, it will probably be a while before I have time to work on
> > the second task, since I'm already swamped trying to validate the MI
> > testsuite with a syntax checker and changing the grammar to match
> > what GDB actually outputs.
This is not clear to me ... one more scenario so you can see
from my point of view 8-)
As you pointed out, when creating the pseudo pty
we have a master and slave side and both should be important :
(gdb) -mi-create-pty
^done,pty={master="/dev/ptyp0",slave="/dev/ptyTf"}
(gdb)
The master is given to gdb to set std{in,out,err} of the inferior after forking
(gdb) -mi-set-tty /dev/ptyp0
^done
(gdb) -exec-run
^running
And the slave is use internally by the front end to read/write when
communicating with the inferior.
TTY is good for a few things:
- allow to separate the inferior stream from the mi protocol
- some programs need a real pty to work i.e. passwd, ...
- correct behaviour of buffering, stdio will be line buffer
we have a lot of PR from folks asking after doing a next on
printf("print this\n");
why is the pring not showing up.