Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Simon Marchi <simark@simark.ca>
To: "Maciej W. Rozycki" <macro@linux-mips.org>,
	Philippe Waroquiers <philippe.waroquiers@skynet.be>
Cc: Philippe Waroquiers via Gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [PUSHED/OBVIOUS] Remove gdb-gdb.gdb breakpoint on disappeared function info_command.
Date: Sat, 2 May 2020 20:33:20 -0400	[thread overview]
Message-ID: <10cf643b-b3e3-55f0-99ea-19e5ae62fc5c@simark.ca> (raw)
In-Reply-To: <alpine.LFD.2.21.2005030011440.3602499@eddie.linux-mips.org>

On 2020-05-02 8:13 p.m., Maciej W. Rozycki wrote:
> On Sun, 3 May 2020, Philippe Waroquiers wrote:
> 
>>>> I couldn't find any clue from the ChangeLog entries about why that
>>>> break command was put into the .gdbinit file.  It might be possible to
>>>> figure out more precisely when it was introduced, but I didn't attempt
>>>> this.  I doubt that earlier imports would have any additional useful
>>>> info not already in the ChangeLog entries that I did examine.
>>>
>>>  Hmm, I'm quite badly surprised to see this feature go, and I do hope it 
>>> has been functionally (and hopefully transparently) replaced with whatever 
>>> replaced `info_command'.
>> Neither Tom nor myself we understood the idea (and saw no description)
>> and as it was broken, it was deemed appropriate to just remove the
>> breakpoint command from gdb-gdb.gdb.
> 
>  I'm fairly sure it was documented somewhere, but I seem unable to track 
> it down now.  Maybe it was just meant to be obvious from `.gdbinit'.  I 
> must have used this feature for some 20 years now at the very least.
> 
>> Sorry if this removal was a bad idea and inappropriate for 
>> PUSHED/OBVIOUS rule.
> 
>  I think it's the original commit that removed `info_command' that should 
> have had this feature discussed.
> 
>>>  Its use was quite obvious to anyone who actually debugged GDB from time 
>>> to time: it was there so that you could break from the debuggee GDB into 
>>> the debugger GDB with the use of the `info' command (with no arguments), 
>>> as obviously using signals like SIGINT for that was quite problematic.  I 
>>> used to use this feature regularly, up until the last time a couple months 
>>> back when I switched to non-GDB work.
>> I do limited GDB debugging, but was not aware of this feature.
>> I am not sure to understand the problem:
>> C-c works for me to interrupt GDB, and the top GDB gets
>> back the control (I typically launch top-gdb separately
>> and attach to the inferior GDB).
>> Can you explain more in details the problem this was solving ?
> 
>  I don't remember offhand; I do remember there were issues in some debug 
> scenarios with using signals, perhaps unintended delivery to the debuggee 
> GDB (or its debuggee), or some problems with trapping the signal in the 
> first place (perhaps on MinGW, where obviously we don't have a typical 
> *nix environment and ^C may have simply killed the outer GDB and other 
> signals such as SIGQUIT may not have had a way to be produced at all).  
> Especially as when debugging broken GDB (which is why you debug it in the 
> first place) you often find it in an odd state.
> 
>  In any case `info' was a clean and reliable way to break into the outer 
> GDB from the inner GDB's command prompt.
> 
>>>  So what's the current mechanism to do that?  I do hope to have it the 
>>> next time I poke at GDB.
>> If something done in the inferior GDB must trigger the top GDB to regain
>> control, we could add a specific dummy command
>>    e.g.  maintenance wake-up-top-gdb
>> and then have the breakpoint put on the wake_up_top_gdb_command function
>> implementing this dummy command.
> 
>  Ouch, that's a horrible lot of characters to type, even if we factor in 
> completion (which some host configurations lack, e.g. MinGW); one of the 
> obvious features of `info' was its brevity (especially in its `i' short 
> form).
> 
>  If the `info' command has been removed (why?), then I think a stub ought 
> to be added back, just to have this feature restored.
> 
>  Also it's much older than you suggested, and comes from:
> 
> commit e91b87a36830d061ef87d67be5f309e4d4ed918f
> Author: gdb-3.1 <gdb@fsf.org>
> Date:   Tue Jan 31 17:56:40 1989 +0000
> 
>     gdb-3.1
> 
> -- see just the top of this commit.
> 
>  Ah, there it goes (from that commit) as far as the piece of documentation 
> I have been missing has been concerned:
> 
> +The "info" command, when executed without a subcommand in a gdb being
> +debugged by gdb, will pop you back up to the top level gdb.  See
> +.gdbinit for more details.
> 
> in `gdb/README'.  It was then added to `gdb/doc/gdbint.texinfo' with:
> 
> commit a5e7f259539178b69a1a371cd4aa25a1787f3995
> Author: Jim Kingdon <jkingdon@engr.sgi.com>
> Date:   Tue Apr 27 23:00:39 1993 +0000
> 
> and then removed from `gdb/README' with:
> 
> commit 804d23f31dde2451e86bbafc7b2ee6743717ca94
> Author: John Gilmore <gnu@cygnus>
> Date:   Sun Aug 1 20:03:51 1993 +0000
> 
> Finally `gdb/doc/gdbint.texinfo' was removed in its entriety with:
> 
> commit 0a7cfe2cf50b450d0cf9db16ee4bd027e08763e8
> Author: Stan Shebs <shebs@codesourcery.com>
> Date:   Mon Sep 16 18:00:34 2013 +0000
> 
> so we have removed that piece of documentation from our repo, however as 
> per: <https://sourceware.org/ml/gdb-patches/2013-08/msg00855.html> it has 
> been moved to our wiki and the feature of `info' is still mentioned here: 
> <https://sourceware.org/gdb/wiki/Internals%20Debugging-GDB-with-itself>.
> 
>  So it looks like we've actually removed a documented feature.
> 
>   Maciej
> 

I really don't mind adding back this feature, especially if some folks are used
to it.  If you don't use it, it doesn't hurt you.

But I think it all shows the importance of documenting the intent along with the
code, don't be cheap on comments :).

Simon



  reply	other threads:[~2020-05-03  0:33 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-01 14:54 Philippe Waroquiers
2020-05-02  4:02 ` Kevin Buettner
2020-05-02 21:19   ` Maciej W. Rozycki
2020-05-02 23:01     ` Philippe Waroquiers
2020-05-02 23:57       ` Kevin Buettner
2020-05-03  0:13       ` Maciej W. Rozycki
2020-05-03  0:33         ` Simon Marchi [this message]
2020-05-03 11:03         ` Pedro Alves
2020-05-03 12:45         ` Philippe Waroquiers
2020-05-03 17:17     ` Tom Tromey
2020-05-03 18:33       ` Philippe Waroquiers
2020-05-04 21:21         ` Tom Tromey

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=10cf643b-b3e3-55f0-99ea-19e5ae62fc5c@simark.ca \
    --to=simark@simark.ca \
    --cc=gdb-patches@sourceware.org \
    --cc=macro@linux-mips.org \
    --cc=philippe.waroquiers@skynet.be \
    /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