Re: [RFA 3/3] Document 'set|show exec-file-mismatch (reload|warn|off)'

Philippe Waroquiers
2019-12-21T20:16:14Z

Thanks for the detailed comments, I will fix/improve
according to your suggestions.

However, your comments make me think that the words used
in the command itself might have to be improved, as the
word "reload" seems confusing.

I will try to clarify what "reload" currently does using an example.

Imagine you have 2 running processes:
process PID 123 running program xxxxx
process PID 345 running program yyyyy

When GDB attaches to 123, it determines that the program
is xxxxx. When detaching, and then attaching to 345,
GDB git master version *silently keeps* xxxxx as exec-file
for PID 345.

When the below new option is reload or warn, when attaching
to 345, GDB will determine that the exec-file of 345
is yyyyy.
It then compares the file name yyyyy with the current exec file xxxxx,
and because file differs, it will warn the user and (for reload option)
ask the user if the exec-file yyyyy must be reloaded.

So, "reload" does not mean: "reload the same file if it was changed on disk",
it means "reload a new exec-file, because the PID we attach to
runs another exec-file".

Note that with the above 2 processes, GDB git master similarly uses the wrong
file if you do:
gdb xxxxx
(gdb) attach 345
=> GDB now silently uses the (wrong) file xxxxx to debug 345.
That is equally solved (or warned) with the new option.

So, maybe "reload" in 'set exec-file-mismatch reload|warn|off' should be replaced
by a less confusing word?

Maybe 'set exec-file-mismatch ask-to-load|warn|off' ?

Feedback ? Any other suggestion ?

Thanks

Philippe

On Sat, 2019-12-21 at 19:44 +0200, Eli Zaretskii wrote:
> > From: Philippe Waroquiers <philippe.waroquiers@skynet.be>
> > Cc: Philippe Waroquiers <philippe.waroquiers@skynet.be>
> > Date: Sat, 21 Dec 2019 15:36:32 +0100
> >
> > + Set or show the option 'exec-file-mismatch'. When GDB attaches to
> > + a running program and can determine the running program, this new option
>
> "attached to a running program and can determine the running program"
> sounds strange and confusing (if GDB has attached to a program, it
> should not have any trouble determining it, right?). I guess you
> meant something like
>
> When GDB attaches to a running process, and can determine the
> executable program file the process runs, this new option ...
>
> > + indicates how to handle a mismatch between the current exec-file and
> > + the automatically detected file.
>
> Here, instead of "current exec-file" I'd use "the program file on
> disk", and instead of "automatically detected" I'd use "the program
> file used to start the process". The main point is not to introduce
> terminology not referenced in previous text, otherwise you risk losing
> or confusing the reader.
>
> > + and reload the automatically determined file after user confirmation.
>
> Well, the "automatically determined file" can no longer be reloaded,
> since it was updated on disk, right?
>
> > +@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.
>
> Suggest to explain how the mismatch is determined, because otherwise
> this text sounds unclear and maybe confusing.
>
> > +@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}.
>
> I'd reword this text as follows:
>
> Whether to detect mismatch between the program file used to start
> the process and the current executable file of that program on disk.
> If @samp{reload}, the default, display a warning and ask the user
> whether to reload the program's file; if @samp{warn}, just display a
> warning; if @samp{off}, don't attempt to detect a mismatch.
>
> > +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}).
>
> The period before @pxref in parentheses is redundant and should be
> removed.
>
> Thanks.