Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Pedro Alves <pedro@palves.net>
To: Eli Zaretskii <eliz@gnu.org>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH v2 16/16] Document pseudo-terminal and interrupting changes
Date: Wed, 16 Jun 2021 11:15:38 +0100	[thread overview]
Message-ID: <86b228b3-31d1-103e-5c98-18a8a6032f2f@palves.net> (raw)
In-Reply-To: <83r1h34771.fsf@gnu.org>

Hi Eli,

It will take me a bit to actually go implement changes, but here are some responses.

On 2021-06-15 1:56 p.m., Eli Zaretskii wrote:
>> 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.

Indeed.  I think I'll drop the word "standard".

> 
>> +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?

Yeah, I'll take a fresh look.  I was thinking that in the future other Unix
hosts will be switched to use this feature as well, and we tend to forget updating
such references in the manual.

> 
> 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.

This was discussed in the other thread, but what you're saying really isn't
correct -- continuing the program after it was stopped doesn't normally
make the the debuggee receive the SIGINT.  Only if you explicitly pass it,
with special commands.

> 
>> +@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?

I was creating a new "Interrupting" node in the manual, so I thought it
was a good place to put cross references to other places in the manual
that talk about interruption.  That's all this is.  Just like the
reference to the remote debug section.

  parent reply	other threads:[~2021-06-16 10:15 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
2021-06-16  9:31     ` Pedro Alves
2021-06-16 12:29       ` Eli Zaretskii via Gdb-patches
2021-06-16 10:15     ` Pedro Alves [this message]
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=86b228b3-31d1-103e-5c98-18a8a6032f2f@palves.net \
    --to=pedro@palves.net \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    /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