From: Bob Rossi <bob@brasko.net>
To: gdb-patches@sources.redhat.com
Subject: Re: MI testsuite to use PTY for inferior
Date: Sat, 13 Aug 2005 17:26:00 -0000 [thread overview]
Message-ID: <20050813165518.GA568@white> (raw)
In-Reply-To: <20050802204750.GA14919@nevyn.them.org>
On Tue, Aug 02, 2005 at 04:47:50PM -0400, Daniel Jacobowitz wrote:
> On Tue, Aug 02, 2005 at 11:45:20PM +0300, Eli Zaretskii wrote:
> > > Date: Mon, 1 Aug 2005 23:50:20 -0400
> > > From: Daniel Jacobowitz <drow@false.org>
> > > Cc: gdb-patches@sources.redhat.com
> > >
> > > Yes, but the problem's that the buffering is in the program being
> > > debugged. It's not the buffering of the GDB MI stream that's the
> > > problem, but the fact that the stdout of the program you're debugging
> > > would suddenly become block buffered instead of line buffered, if you
> > > fed it to a pipe when it expects a TTY.
> >
> > This started as a discussion how to separate MI output from the
> > debuggee's. For that, I suggested to redirect MI's output (_not_ the
> > debuggee's) to a different file handle. That should not change the
> > buffering of the debuggee's stdout in any way. While the problem you
> > mention is real, it has nothing to do with separation of these two
> > streams: if sending the program's output to a pipe changes its
> > buffering, we already have that annoyance on Windows.
>
> Ah! Thank you, I misunderstood your solution. This is a very
> interesting idea indeed.
This is a good solution. I just had yet another idea, that might be
worth while. It would be a simple way to allow the FE to separate the MI
output command and the inferior output data.
Currently, GDB works like this,
(gdb)
-interpreter-exec console "b test.c:49"
~"Breakpoint 1 at 0x8048525: file test.c, line 49.\n"
^done
(gdb)
-interpreter-exec console "r"
~"Starting program: /home/bob/cvs/cgdb/cgdb.readline/objdir/test \n"
OUTPUT FROM INFERIOR
~"\n"
~"Breakpoint 1, main (argc=1, argv=0xbffffb54) at test.c:49\n"
~"49\t for ( i = 0; i < 100; i++)\n"
^done
(gdb)
If we let GDB do what it does know, except change the MI output command
to allow something like,
(gdb)
-interpreter-exec console "b test.c:49"
~"Breakpoint 1 at 0x8048525: file test.c, line 49.\n"
^done
(gdb)
-interpreter-exec console "r"
~"Starting program: /home/bob/cvs/cgdb/cgdb.readline/objdir/test \n"
=inferior-starting unique-key
OUTPUT FROM INFERIOR
=inferior-stopped unique-key
~"\n"
~"Breakpoint 1, main (argc=1, argv=0xbffffb54) at test.c:49\n"
~"49\t for ( i = 0; i < 100; i++)\n"
^done
(gdb)
In this way, the FE can still break the output into lines, and it can
strcmp the line to determine if the output is from GDB or the inferior.
The "unique-key" takes care of the case where you are actually debugging
GDB, because once the FE get's the '=inferior-starting unique-key' line,
it doesn't care how many =inferior-started or =inferior-stopped lines
get sent out until the key matches.
This sounds like a very simple solution. What does everyone think?
Thanks,
Bob Rossi
next prev parent reply other threads:[~2005-08-13 16:55 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-30 5:54 Nick Roberts
2005-07-30 17:39 ` Bob Rossi
2005-07-30 18:08 ` Daniel Jacobowitz
2005-07-30 22:47 ` Nick Roberts
2005-07-31 1:19 ` Daniel Jacobowitz
2005-07-30 22:47 ` Nick Roberts
2005-07-30 23:03 ` Bob Rossi
2005-07-31 1:21 ` Daniel Jacobowitz
2005-07-31 13:16 ` Bob Rossi
2005-07-31 15:31 ` Daniel Jacobowitz
2005-07-31 21:20 ` Bob Rossi
2005-08-01 1:53 ` Daniel Jacobowitz
2005-08-01 2:05 ` Bob Rossi
2005-08-01 2:15 ` Daniel Jacobowitz
2005-08-01 11:32 ` Bob Rossi
2005-08-01 3:56 ` Eli Zaretskii
2005-08-01 11:30 ` Bob Rossi
2005-08-01 13:00 ` Daniel Jacobowitz
2005-08-01 13:16 ` Bob Rossi
2005-08-01 13:23 ` Daniel Jacobowitz
2005-08-01 13:31 ` Bob Rossi
2005-08-01 14:00 ` Daniel Jacobowitz
2005-08-01 14:07 ` Bob Rossi
2005-08-01 18:45 ` Eli Zaretskii
2005-08-01 19:01 ` Mark Kettenis
2005-08-01 19:25 ` Daniel Jacobowitz
2005-08-01 19:34 ` Mark Kettenis
2005-08-01 19:43 ` Bob Rossi
2005-08-01 20:48 ` Eli Zaretskii
2005-08-01 20:45 ` Eli Zaretskii
2005-08-01 20:52 ` Daniel Jacobowitz
2005-08-02 3:45 ` Eli Zaretskii
2005-08-02 3:50 ` Daniel Jacobowitz
2005-08-02 20:46 ` Eli Zaretskii
2005-08-02 20:48 ` Daniel Jacobowitz
2005-08-13 17:26 ` Bob Rossi [this message]
2005-08-13 21:41 ` Daniel Jacobowitz
2005-07-31 21:35 ` Nick Roberts
2005-07-31 21:37 ` Daniel Jacobowitz
2005-07-31 23:32 ` Nick Roberts
2005-08-01 1:51 ` Daniel Jacobowitz
2005-08-03 2:07 ` Bob Rossi
2005-08-03 12:48 ` Bob Rossi
2005-08-03 13:19 ` Daniel Jacobowitz
2005-08-03 18:22 ` Bob Rossi
2005-08-03 18:23 ` Daniel Jacobowitz
2005-08-03 18:24 ` Bob Rossi
2005-08-03 18:32 ` Daniel Jacobowitz
2005-08-03 19:31 ` Bob Rossi
2005-08-04 2:23 ` Bob Rossi
2005-08-04 2:27 ` Bob Rossi
2005-08-04 4:05 ` Daniel Jacobowitz
2005-08-04 13:07 ` Bob Rossi
-- strict thread matches above, loose matches on Subject: below --
2005-07-27 3:18 Bob Rossi
2005-08-13 22:04 ` Mark Kettenis
2005-08-20 9:07 ` Bob Rossi
2005-08-30 2:55 ` Daniel Jacobowitz
2005-09-01 0:52 ` Bob Rossi
2005-09-01 22:12 ` Mark Kettenis
2005-09-01 23:52 ` Bob Rossi
2005-09-05 19:52 ` Bob Rossi
2005-09-10 4:02 ` Daniel Jacobowitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050813165518.GA568@white \
--to=bob@brasko.net \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox