Re: repeat command on return after issuing guile command
David Boles <[email protected]>
| Newsgroups | gmane.comp.gdb.devel |
|---|---|
| Message-ID | <1493656627.1159458.961959512.72D00241@webmail.messagingengine.com> |
My apologies - I never run gdb outside of Emacs and made the assumption that an interaction between the gdb-mi.el code, guile, and command repeating wasn't plausible. The problem indeed does not occur with gdb itself, only when run from within emacs. I will go and investigate things from the Emacs side of things and try to develop a patch for this behavior. Thanks for setting me straight. - db On Mon, May 1, 2017, at 06:20 AM, Matt Rice wrote: > On Sun, Apr 30, 2017 at 12:03 PM, Eli Zaretskii <[email protected]> wrote: > >> From: David Boles <[email protected]> > >> Date: Fri, 28 Apr 2017 22:50:18 -0500 > >> > >> I have recently been learning to use the guile mechanism for extending gdb’s capabilities - very powerful. One thing that I have noticed is that after a “guile (…)” command is issued, the normal behavior of gdb re-performing the last command executed if you just hit enter is disabled. This applies to even native gdb commands like “next” or “step” - which is quite painful. > >> > >> I have observed this with versions 7.10.x and 7.12.1. > > > > I cannot reproduce this with GDB 7.12 built with Guile 2.0.X. I tried > > this: > > > > (gdb) apropos file > > ... long list of commands ... > > (gdb) <press RET> > > ... the same long list of commands ... > > (gdb) guile (display (+ 20 3)) (newline) > > 23 > > (gdb) apropos file > > ... long list of commands ... > > (gdb) <press RET> > > ... the same long list of commands ... > > > > So it seems to work as expected for me. Can you show a recipe that > > exhibits the problem on your system? > > One thing that I can think of is if the guile script being executed > causes the program to continue, > which then hits a breakpoint which has "commands" associated with it, > the call to prevent_dont_repeat in > breakpoint.c (bpstat_do_actions_1), could have some clobbering effect > messes with the repeat. > > I cannot seem reproduce such behavior though > > using the following foo.gdb: > set breakpoint pending on > break foo > commands 1 > print "foo" > end > guile (use-modules (gdb)) > guile (execute "start") > guile (execute "cont") > > $ echo "void foo() {}; int main() { while (1) foo(); return 0; }" | > gcc -g -x c - && gdb -quiet ./a.out -ex 'source foo.gdb' > Reading symbols from ./a.out...done. > Breakpoint 1 at 0x4004aa: file <stdin>, line 1. > Breakpoint 1, foo () at <stdin>:1 > 1 in <stdin> > $1 = "foo" > (gdb) guile (execute "cont") > Breakpoint 1, foo () at <stdin>:1 > 1 in <stdin> > $2 = "foo" > (gdb) > Breakpoint 1, foo () at <stdin>:1 > 1 in <stdin> > $3 = "foo" > (gdb)