Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Eli Zaretskii via Gdb-patches <gdb-patches@sourceware.org>
To: Pedro Alves <pedro@palves.net>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH v2 16/16] Document pseudo-terminal and interrupting changes
Date: Tue, 15 Jun 2021 15:56:50 +0300	[thread overview]
Message-ID: <83r1h34771.fsf@gnu.org> (raw)
In-Reply-To: <20210614212410.1612666-17-pedro@palves.net> (message from Pedro Alves on Mon, 14 Jun 2021 22:24:10 +0100)

> From: Pedro Alves <pedro@palves.net>
> Date: Mon, 14 Jun 2021 22:24:10 +0100
> 
> +Depending on the operating system and configuration, either:
> +
> +@itemize
> +
> +@item
> +@value{GDBN} switches the terminal to its own terminal modes to
> +interact with you, but it records the terminal modes your program was
> +using and switches back to them when you continue running your
> +program.  This is the default on most systems.
> +
> +@item
> +@value{GDBN} creates a pseudo-terminal, sets your program to use it
> +for standard input and standard output, and forwards input and output
> +to and from @value{GDBN}'s terminal at appropriate times.  This is the
> +default on GNU/Linux.

This doesn't read well.  I suggest to make "Either" and "Or" part of
the text, like this:

  Depending on the operating system and configuration:

  @itemize

  @item
  Either @value{GDBN} switches the terminal ...

  @item
  Or @value{GDB} creates a pseudo-terminal ...

> +@value{GDBN} creates a pseudo-terminal, sets your program to use it
> +for standard input and standard output
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This begs the question about the standard error stream.

> +On some operating systems, by default, @value{GDBN} creates a
> +pseudo-terminal, and sets your program to use it for standard input
> +and standard output.  @value{GDBN} takes care of forwarding input and
> +output to and from @value{GDBN}'s terminal at appropriate times, so
> +this is largely transparent.

The 2 different behaviors are described somewhat inconsistently: in
one place you say "most systems" vs "GNU/Linux", in another place
"some operating systems" instead of "GNU/Linux", and in yet another
place you say "on systems where GDB creates a pseudo-terminal".  Can
you describe the pseudo-terminal feature consistently as a GNU/Linux
feature?

Also, describing the feature in a single place, and just having a
cross-reference to there in other places will go a long way towards
making the description clear and complete.

> +On such systems, in some cases, like for example if you need to run
> +your program and then detach it, and you want the program to remain
> +associated with a terminal, you may prefer that @value{GDBN} starts
> +your program using the same device for standard input and output as
> +@value{GDBN} is using.

IMHO, this is a misfeature.  If the terminal from which GDB was run
remains on the system, it would be an unpleasant surprise for the user
that the program gets hit by SIGHUP when you detach.  I think we
should try to avoid this side effect, if that's feasible.

> +@node Interrupting
> +@section Interrupting

Once again, I'd prefer to talk about "stopping" instead.  Or maybe
even "getting control to GDB".

> +Depending on operating system and configuration, this results in
> +interrupting the program with either a @code{SIGINT} signal:
> +
> +@smallexample
> +Program received signal SIGINT, Interrupt.
> +@end smallexample
> +
> +@noindent
> +or plainly suspending the program:
> +
> +@smallexample
> +Program stopped.
> +@end smallexample

This seems to be inaccurate.  On MS-Windows, for example, I see
something different:

  Thread 4 received signal SIGTRAP, Trace/breakpoint trap.

So maybe you want to say that the above is only true for Posix hosts.
Or maybe just be more vague and don't try quoting the messages?

> +On systems where interrupting the program results in a plain
> +suspension instead of the program receiving a @code{SIGINT} signal,
> +you can still pass a @code{SIGINT} signal to the program after it
> +stops, using either the @code{signal SIGINT} or @code{queue-signal
> +SIGINT} commands.  @xref{Signaling,,Giving your Program a Signal}.

This begs a question I already asked elsewhere: I'd expect that
continuing the program after it was stopped like that will deliver
SIGINT to the program, without any special commands.  Isn't that so?
Your text seems to imply that it isn't, which I find surprising --
after all, the user pressed Ctrl-C, so "normally" the debuggee should
be hit with SIGINT, as if we were not debugging it.

> +@value{GDBN} on MS-Windows supports @kbd{C-@key{BREAK}} as an
> +alternative interrupt key sequence.  @xref{interrupt debuggee on
> +MS-Windows}.

I'm not sure I understand the significance of this note: after all, a
Windows program can install a Ctrl-BREAK handler exactly like it does
with Ctrl-C.  Is this only about SetConsoleMode?

Thanks.

  reply	other threads:[~2021-06-15 12:57 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-14 21:23 [PATCH v2 00/16] Interrupting programs that block/ignore SIGINT Pedro Alves
2021-06-14 21:23 ` [PATCH v2 01/16] Test interrupting programs that block SIGINT [gdb/9425, gdb/14559] Pedro Alves
2021-06-14 21:23 ` [PATCH v2 02/16] prefork_hook: Remove 'args' parameter Pedro Alves
2021-06-14 21:23 ` [PATCH v2 03/16] Make gdb.base/long-inferior-output.exp fail fast Pedro Alves
2021-06-14 21:23 ` [PATCH v2 04/16] Fix gdb.multi/multi-term-settings.exp race Pedro Alves
2021-06-14 21:23 ` [PATCH v2 05/16] Don't check parent pid in gdb.threads/{ia64-sigill, siginfo-threads, watchthreads-reorder}.c Pedro Alves
2021-06-14 21:24 ` [PATCH v2 06/16] Special-case "set inferior-tty /dev/tty" Pedro Alves
2021-06-14 21:24 ` [PATCH v2 07/16] Make inferior/GDB share terminal in tests expecting output after detach Pedro Alves
2021-06-14 21:24 ` [PATCH v2 08/16] Make inferior/GDB share terminal in tests that exercise GDB/inferior reading same input Pedro Alves
2021-06-14 21:24 ` [PATCH v2 09/16] gdb.mi/mi-logging.exp, don't send input to GDB while the inferior is running Pedro Alves
2021-06-14 21:24 ` [PATCH v2 10/16] target_terminal::ours_for_output before printing signal received Pedro Alves
2021-06-14 21:24 ` [PATCH v2 11/16] Move scoped_ignore_sigttou to gdbsupport/ Pedro Alves
2021-06-17 21:49   ` Pedro Alves
2021-06-14 21:24 ` [PATCH v2 12/16] Always put inferiors in their own terminal/session [gdb/9425, gdb/14559] Pedro Alves
2021-06-14 21:24 ` [PATCH v2 13/16] exists_non_stop_target: Avoid flushing frames Pedro Alves
2021-06-14 21:24 ` [PATCH v2 14/16] convert previous_inferior_ptid to strong reference to thread_info Pedro Alves
2021-06-14 21:24 ` [PATCH v2 15/16] GNU/Linux: Interrupt/Ctrl-C with SIGSTOP instead of SIGINT [PR gdb/9425, PR gdb/14559] Pedro Alves
2021-07-08 23:05   ` Maciej W. Rozycki
2021-07-13 15:26     ` Pedro Alves
2021-06-14 21:24 ` [PATCH v2 16/16] Document pseudo-terminal and interrupting changes Pedro Alves
2021-06-15 12:56   ` Eli Zaretskii via Gdb-patches [this message]
2021-06-16  9:31     ` Pedro Alves
2021-06-16 12:29       ` Eli Zaretskii via Gdb-patches
2021-06-16 10:15     ` Pedro Alves
2021-06-16 12:15       ` Eli Zaretskii via Gdb-patches
2021-06-16 12:26         ` Pedro Alves
2021-06-16 13:05           ` Eli Zaretskii via Gdb-patches
2021-06-15 12:34 ` [PATCH v2 00/16] Interrupting programs that block/ignore SIGINT Eli Zaretskii via Gdb-patches
2021-06-16 11:27   ` Pedro Alves
2021-06-16 12:45     ` Eli Zaretskii via Gdb-patches
2021-06-18 10:12 ` Andrew Burgess
2021-06-24 18:12 ` Konstantin Kharlamov via Gdb-patches
2021-06-24 18:55   ` Pedro Alves
2021-06-29  1:15     ` Eldar Abusalimov via Gdb-patches

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=83r1h34771.fsf@gnu.org \
    --to=gdb-patches@sourceware.org \
    --cc=eliz@gnu.org \
    --cc=pedro@palves.net \
    /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