RE: Reverse debugging

Marc Khouzam
2009-07-16T15:55:57Z

> -----Original Message-----
> From: Hui Zhu [mailto:teawater@gmail.com]
> Sent: July-15-09 11:09 PM
> To: Nick Roberts; Marc Khouzam
> Cc: gdb@sources.redhat.com; Michael Snyder
> Subject: Re: Reverse debugging
>
> Thanks Nick, I think the better way is add a special cmd for it.
>
> Marc, do you have some ideas with it?
>
>
> Thanks,
> Hui
>
> On Wed, Jul 15, 2009 at 10:27, Nick
> Roberts<nickrob@snap.net.nz> wrote:
> > I've created tool bar functionality in Emacs for reverse
> debugging a bit like
> > that in the DSF-GDB debugger for Eclipse, I think.

Cool!

> >
> > It works quite nicely and I would like to include it in
> Emacs 23.2 (23.1
> > should be coming out next week) but there is one small
> problem with "record
> > stop".  It currently prompts the user for confirmation and
> Emacs can't handle
> > that from the tool bar and update the GUI.  Would it be
> possible to add a
> > "noconfirm" option, perhaps like below, which should be
> invisible to the
> > normal user?

So in your case you are dealing with a proper tty?
For eclipse, we fall in the !from_tty case.

Frontends should definetely not be bothered with those queries.
In my mind, a FE should know what it is doing so if it requests
an action like 'record stop' it should not be prompted at all.
This is probably true for any of these queries.

I was originally going to ask Hui always have a !from_tty check,
but now it seems this would not work for emacs.

Can we check if the default interpreter is MI somehow and in those
cases not do the query? The idea is that if one uses MI then
it is not in some user-interactive session.

Just a thought...

Marc

> >
> > --
> > Nick
> http://www.inet.net.nz/~nickrob
> >
> >
> > 2009-07-15  Nick Roberts  <nickrob@snap.net.nz>
> >
> >        * record.c (cmd_record_stop): Add a "noconfirm" option to the
> >        "record stop" command.
> >
> >
> > Index: record.c
> > ===================================================================
> > RCS file: /cvs/src/src/gdb/record.c,v
> > retrieving revision 1.8
> > diff -c -p -r1.8 record.c
> > *** record.c    2 Jul 2009 17:21:06 -0000       1.8
> > --- record.c    15 Jul 2009 02:25:21 -0000
> > *************** cmd_record_stop (char *args, int from_tt
> > *** 1157,1164 ****
> >  {
> >    if (current_target.to_stratum == record_stratum)
> >      {
> > !       if (!record_list || !from_tty || query (_("Delete
> recorded log and "
> > !                                               "stop recording?")))
> >        unpush_target (&record_ops);
> >      }
> >    else
> > --- 1157,1168 ----
> >  {
> >    if (current_target.to_stratum == record_stratum)
> >      {
> > !       int noconfirm = 0;
> > !       if (args)
> > !         noconfirm = (strcmp (args, "noconfirm") == 0) ? 1 : 0;
> > !
> > !       if (!record_list || !from_tty || noconfirm
> > !         || query (_("Delete recorded log and stop recording?")))
> >        unpush_target (&record_ops);
> >      }
> >    else
> >
>