[PING^2][PATCH][PR gdb/21690] Fix interruption of command history search
Andrew Burgess
andrew.burgess@embecosm.com
Mon Jun 8 14:41:12 GMT 2020
* Hannes Domani via Gdb-patches <gdb-patches@sourceware.org> [2020-06-08 11:51:07 +0000]:
> Ping.
>
> Am Freitag, 15. Mai 2020, 11:00:41 MESZ hat Hannes Domani via Gdb-patches <gdb-patches@sourceware.org> Folgendes geschrieben:
>
> > Am Samstag, 25. April 2020, 19:17:34 MESZ hat Hannes Domani via Gdb-patches <gdb-patches@sourceware.org> Folgendes geschrieben:
> >
> > Ping.
> >
> > > If you press Ctrl-C during an incremental search of the readline history, the
> > > prompt is reset, but readline is still in the incremental search mode.
> > >
> > > The call of rl_callback_sigcleanup cleans up the internal readline state, and
> > > disables the incremental search mode.
I didn't look into the implementation of this, but something seems a
little odd, though I don't know if this is just my machine setup....
I start a GDB session, and do this:
(gdb) echo hello\n
hello
At this point I start a reverse search, so I type:
<ctrl+r>
echo
<ctrl+c>
Now I'm left in this situation:
(gdb) echo hello\n
^
'-- Prompt is here.
So, whatever I was in the process of finding when I hit Ctrl+C is left
on my prompt line in an editable state.
This is different from the behaviour I see in, for example, bash,
where when I Ctrl+C the reverse search is aborted and I'm dropped back
to an empty prompt.
Which behaviour do you see?
Which behaviour do you expect to see?
Thanks,
Andrew
> > >
> > > gdb/ChangeLog:
> > >
> > > 2020-04-25 Hannes Domani <ssbssa@yahoo.de>
> > >
> > > PR gdb/21690
> > > * main.c (start_event_loop): Call rl_callback_sigcleanup.
> > > ---
> > > gdb/main.c | 4 ++++
> > > 1 file changed, 4 insertions(+)
> > >
> > > diff --git a/gdb/main.c b/gdb/main.c
> > > index 59cb14161b..a8c1d3ccb1 100644
> > > --- a/gdb/main.c
> > > +++ b/gdb/main.c
> > > @@ -55,6 +55,8 @@
> > > #include "gdbsupport/alt-stack.h"
> > > #include "observable.h"
> > >
> > > +#include "readline/readline.h"
> > > +
> > > /* The selected interpreter. This will be used as a set command
> > > variable, so it should always be malloc'ed - since
> > > do_setshow_command will free it. */
> > > @@ -371,6 +373,8 @@ start_event_loop ()
> > > in a messed-up state. Reset it here. */
> > > current_ui->prompt_state = PROMPT_NEEDED;
> > > gdb::observers::command_error.notify ();
> > > + /* Clean up internal state of the callback interface. */
> > > + rl_callback_sigcleanup ();
> > > /* This call looks bizarre, but it is required. If the user
> > > entered a command that caused an error,
> > > after_char_processing_hook won't be called from
> > > --
> > > 2.26.2
More information about the Gdb-patches
mailing list