This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: Question about when stdout is flushed in gdb/mi mode
- From: Daniel Jacobowitz <drow at false dot org>
- To: Gordon Prieur <Gordon dot Prieur at Sun dot COM>
- Cc: gdb at sourceware dot org
- Date: Tue, 19 Feb 2008 13:02:33 -0500
- Subject: Re: Question about when stdout is flushed in gdb/mi mode
- References: <47BB0490.6070703@sun.com>
On Tue, Feb 19, 2008 at 08:32:16AM -0800, Gordon Prieur wrote:
> Hi,
>
> If I do several printf command before a breakpoint in normal
> command line gdb, the stdout gets flushed prior to showing the stop
> message in gdb. If I do the same thing in mi mode from a tty, I get
> the same results. But if I do this from NetBeans (where gdb isn't
> running in a tty), the output doesn't get flushed and hence doesn't
> get shown before the stop.
Yes. By default, stdout is line buffered in TTYs and block buffered
otherwise. On pipes, or Cygwin terminals with a mingw32 GDB (where
isatty returns false), stdout ends up block buffered. This applies to
both GDB's stdout and the program being debugged.
GDB never, ever flushes the stdout of the program being debugged.
That would be a real pain if it affected anything you were debugging,
because the buffering is done in the C library, not in the kernel.
You can run the program being debugged in a new TTY, for instance with
"set tty".
--
Daniel Jacobowitz
CodeSourcery