From: Philippe Waroquiers <philippe.waroquiers@skynet.be>
To: Christian Biesinger <cbiesinger@google.com>
Cc: gdb-patches <gdb-patches@sourceware.org>
Subject: Re: [RFA 3/3] Document 'set|show exec-file-mismatch (reload|warn|off)'
Date: Sun, 22 Dec 2019 09:09:00 -0000 [thread overview]
Message-ID: <4981a2dea635ed762e5b5fa75c253f3e162d81ed.camel@skynet.be> (raw)
In-Reply-To: <CAPTJ0XFS8ey34xpdHxU-uX_qiyLxv3WoQPpa1_hXu_eB5LNkUQ@mail.gmail.com>
On Sat, 2019-12-21 at 21:46 -0500, Christian Biesinger via gdb-patches wrote:
> On Sat, Dec 21, 2019, 09:37 Philippe Waroquiers <
> philippe.waroquiers@skynet.be> wrote:
>
> > Mention in NEWS the new option and the set/show commands.
> >
> > Document in gdb.texinfo the new option and the set/show commands.
> >
>
> When would someone set this to off, or even warn? I'm wondering is it makes
> sense to add this setting vs always having the reload behavior?
Effectively, I think that in a large majority of the cases, the reload
behavior is the correct thing to do, which is why it is the default value.
However, I have added the option for the following reasons:
* There are today already several features to choose
flexibly the exec-file and symbol-file (see GDB manual
"18.1 Commands to Specify Files"). The new option allows to retain
the flexible manual control, which I assume is needed for some
use cases.
* Also, the previous trial to fix this problem was based on the notion
of "sticky" exec-file: if the exec-file was explicitly given
by the user, then it was never changed automatically when
attaching to another process having another exec-file.
IMO, this was not the best approach, as GDB would still
silently use the wrong file in some cases (such as typo in the PID,
or successive attach/detach after having given a program file
as GDB argument).
But this fix trial also seems to indicate some desire to let the
user choose (in unusual circumstances) to keep a specific exec file.
Note that for reload and warn, the message given to the user explicitly
mention the 'exec-file-mismatch' option, so that users that need some
control are informed of the possibility.
Once the function 'validate_exec_file' was implemented and called at
the right places, implementing the option itself was not a big deal,
apart of the difficulty of properly naming and documenting the values :).
Thanks
Philippe
>
>
> > gdb/ChangeLog
> > YYYY-MM-DD Philippe Waroquiers <philippe.waroquiers@skynet.be>
> >
> > * NEWS: Mention the new option and the set/show commands.
> >
> > gdb/doc/ChangeLog
> > YYYY-MM-DD Philippe Waroquiers <philippe.waroquiers@skynet.be>
> >
> > * gdb.texinfo (Attach): Document the new option and the
> > set/show commands.
> > (Connecting): Reference the exec-file-mismatch option.
> > ---
> > gdb/NEWS | 12 ++++++++++++
> > gdb/doc/gdb.texinfo | 31 +++++++++++++++++++++++++++++++
> > 2 files changed, 43 insertions(+)
> >
> > diff --git a/gdb/NEWS b/gdb/NEWS
> > index ee10914fd8..1a90862b0d 100644
> > --- a/gdb/NEWS
> > +++ b/gdb/NEWS
> > @@ -3,6 +3,18 @@
> >
> > *** Changes since GDB 9
> >
> > +* New commands
> > +
> > +set exec-file-mismatch -- Set exec-file-mismatch handling
> > (reload|warn|off).
> > +show exec-file-mismatch -- Show exec-file-mismatch handling
> > (reload|warn|off).
> > + Set or show the option 'exec-file-mismatch'. When GDB attaches to
> > + a running program and can determine the running program, this new option
> > + indicates how to handle a mismatch between the current exec-file and
> > + the automatically detected file.
> > + 'reload' is the default value: in case of mismatch, GDB will warn the
> > user
> > + and reload the automatically determined file after user confirmation.
> > +
> > +
> > *** Changes in GDB 9
> >
> > * 'thread-exited' event is now available in the annotations interface.
> > diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
> > index 4d25f755d7..a246ba0bf5 100644
> > --- a/gdb/doc/gdb.texinfo
> > +++ b/gdb/doc/gdb.texinfo
> > @@ -2904,6 +2904,31 @@ the program is not found) by using the source file
> > search path
> > the @code{file} command to load the program. @xref{Files, ,Commands to
> > Specify Files}.
> >
> > +@anchor{set exec-file-mismatch}
> > +If the debugger can determine the program running in the process
> > +and this program does not match the current exec-file, the option
> > +@code{exec-file-mismatch} specifies how to handle the mismatch.
> > +
> > +@table @code
> > +@kindex exec-file-mismatch
> > +@cindex set exec-file-mismatch
> > +@item set exec-file-mismatch @samp{reload|warn|off}
> > +In case of mismatch between the current exec-file and the automatically
> > +determined exec-file of the PID the debugger is attaching to,
> > +@samp{reload} indicates to give a warning to the user and reload
> > +the automatically determined exec-file. The user will be asked to
> > +confirm the loading of the automatically determined file.
> > +With @samp{warn}, @value{GDBN} just gives a warning to the user to
> > +signal the mismatch. @samp{off} indicates to not check for mismatch.
> > +The default value is @samp{reload}.
> > +
> > +
> > +@cindex show exec-file-mismatch
> > +@item show exec-file-mismatch
> > +Show the current value of @code{exec-file-mismatch}.
> > +
> > +@end table
> > +
> > The first thing @value{GDBN} does after arranging to debug the specified
> > process is to stop it. You can examine and modify an attached process
> > with all the @value{GDBN} commands that are ordinarily available when
> > @@ -21780,6 +21805,12 @@ established. If you are using @code{gdbserver},
> > you may also invoke
> > @code{gdbserver} using the @option{--attach} option
> > (@pxref{Running gdbserver}).
> >
> > +Some remote targets allow @value{GDBN} to determine the program running
> > +in the process the debugger is attaching to. In such a case, @value{GDBN}
> > +uses the value of @code{exec-file-mismatch} to handle a possible mismatch
> > +between the program running in the process and the current exec-file.
> > +(@pxref{set exec-file-mismatch}).
> > +
> > @end table
> >
> > @anchor{Host and target files}
> > --
> > 2.20.1
> >
> >
next prev parent reply other threads:[~2019-12-22 9:09 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-21 14:36 [RFA 1/3] New option 'set exec-file-mismatch (reload|warn|off)'. Fixes PR gdb/17626 Philippe Waroquiers
2019-12-21 14:36 ` [RFA 2/3] Test 'set exec-file-mismatch reload|warn|off' Philippe Waroquiers
2019-12-21 14:36 ` [RFA 3/3] Document 'set|show exec-file-mismatch (reload|warn|off)' Philippe Waroquiers
2019-12-21 17:44 ` Eli Zaretskii
2019-12-21 20:16 ` Philippe Waroquiers
2019-12-22 18:20 ` Eli Zaretskii
2019-12-22 2:46 ` Christian Biesinger via gdb-patches
2019-12-22 9:09 ` Philippe Waroquiers [this message]
2020-01-08 0:52 ` Tom Tromey
2019-12-21 14:36 ` [RFA 1/3] Implement 'set/show exec-file-mismatch' Philippe Waroquiers
2020-01-08 0:58 ` 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=4981a2dea635ed762e5b5fa75c253f3e162d81ed.camel@skynet.be \
--to=philippe.waroquiers@skynet.be \
--cc=cbiesinger@google.com \
--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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).