RE: Reverse debugging

Marc Khouzam
2009-07-20T13:19:55Z

Typo in my previous email. Sorry.

> (Note that I'm only suggesting to not make the query default to 'Y'.
> There would still be a query though.)

Should have read (no "not")

> (Note that I'm only suggesting to make the query default to 'Y'.
> There would still be a query though.)

> -----Original Message-----
> From: gdb-owner@sourceware.org
> [mailto:gdb-owner@sourceware.org] On Behalf Of Marc Khouzam
> Sent: Monday, July 20, 2009 8:50 AM
> To: Hui Zhu; Nick Roberts
> Cc: Daniel Jacobowitz; gdb@sources.redhat.com; Michael Snyder
> Subject: RE: Reverse debugging
>
>
>
> > -----Original Message-----
> > From: Hui Zhu [mailto:teawater@gmail.com]
> > Sent: Sunday, July 19, 2009 11:27 PM
> > To: Marc Khouzam; Nick Roberts
> > Cc: Daniel Jacobowitz; gdb@sources.redhat.com; Michael Snyder
> > Subject: Re: Reverse debugging
> >
> > Thanks Marc, but what about I keep it but add some switches for it?
> > I want keep the query to tui user.
> > For example:
> > set record query off
> > set record changememeory on
>
> (Note that I'm only suggesting to make the query default to 'Y'.
> There would still be a query though.)
>
> I've been giving the whole problem a little more thought, and I now
> think that it is the way queries are answered that should be changed
> generically.
>
> I'll post a patch today and see what people think.
>
> Note that the suggestion I will post will rely on 'set confirm off'.
> If Nick cannot use that then he'll still need you to have a switch to
> turn these queries off.
>
> Thanks
>
> Marc
>
>
> >
> > Thanks,
> > Hui
> >
> >
> > On Sun, Jul 19, 2009 at 11:19, Marc
> > Khouzam<marc.khouzam@ericsson.com> wrote:
> > >> -----Original Message-----
> > >> From: Daniel Jacobowitz [mailto:drow@false.org]
> > >> Sent: July-17-09 10:25 AM
> > >> To: Marc Khouzam
> > >> Cc: Nick Roberts; Hui Zhu; gdb@sources.redhat.com; Michael Snyder
> > >> Subject: Re: Reverse debugging
> > >>
> > >> On Fri, Jul 17, 2009 at 10:12:00AM -0400, Marc Khouzam wrote:
> > >> > I noticed that the previous CDT GDB integration has its console
> > >> > considered
> > >> > a tty.  It may be worth looking into the difference... when
> > >> time allows
> > >> > it :-)
> > >>
> > >> Wasn't someone just talking on cdt-dev about trouble with
> > whether DSF
> > >> used Spawner or not?  That'd do it.
> > >
> > > I was wrong about the console being a tty.  The old CDT GDB
> > integration
> > > console is also not a tty.  What they do though is use
> > > 'set confirm off'.  That makes sense since queries are
> > being answered
> > > automatically anyway.
> > >
> > > Nick, in your specific case 'confirm off' would work.  The default
> > > answer to
> > > 'record stop' is yes (well, there is not default, but in
> > that case, 'y'
> > > is
> > > chosen).  If you don't want to always 'set confirm off' you
> > may consider
> > > setting it right before sending 'record stop' and turn it back on
> > > right after.  That may be a good enough workaround until
> there is a
> > > proper
> > > solution to this query problem.
> > >
> > > For me the problem for PRecord remains because the
> default value is
> > > not always what I want.  For example, in PRecord the
> default answer
> > > to changing memory and loosing the recorded history
> > > is "N", but as a frontend, I want to answer "Y".
> > >
> > > To fix this problem I suggest that in record.c,
> > > we replace 'nquery' with 'query'; that will make the
> > default be 'Y' when
> > >
> > > confirm is off or when there is no tty.  Note that this
> > seems to be what
> > >
> > > is being done everywhere else in GDB.  There is only one
> > case (pending
> > > breakpoints) that uses default queries, outside of PRecord.
> >  Except for
> > > that
> > > one case, it is really only PRecord that uses yquery and
> > nquery.  And
> > > the
> > > pending breakpoint case is not a problem for frontends that use MI
> > > because
> > > the MI command does not trigger the query.
> > >
> > > Note that up to now, I've been recompiling GDB with that
> suggestion
> > > so that I can properly use PRecord in Eclipse.
> > >
> > > The below patch implements the suggestion.
> > >
> > > Thanks
> > >
> > > Marc
> > >
> > > ChangeLog
> > > 2009-07-18  Marc Khouzam  <marc.khouzam@ericsson.com>
> > >
> > >        * record.c (record_store_registers): Replace nquery with
> > >        query to allow frontends to automatically answer 'y'.
> > >        (record_xfer_partial): Ditto.
> > >
> > >
> > > ### Eclipse Workspace Patch 1.0
> > > #P src
> > > Index: gdb/record.c
> > >
> ===================================================================
> > > RCS file: /cvs/src/src/gdb/record.c,v
> > > retrieving revision 1.8
> > > diff -u -r1.8 record.c
> > > --- gdb/record.c        2 Jul 2009 17:21:06 -0000       1.8
> > > +++ gdb/record.c        19 Jul 2009 03:06:01 -0000
> > > @@ -937,13 +937,13 @@
> > >          /* Let user choose if he wants to write register
> > or not.  */
> > >          if (regno < 0)
> > >            n =
> > > -             nquery (_("Because GDB is in replay mode,
> > changing the "
> > > +             query (_("Because GDB is in replay mode,
> > changing the "
> > >                        "value of a register will make the
> > execution "
> > >                        "log unusable from this point onward.  "
> > >                        "Change all registers?"));
> > >          else
> > >            n =
> > > -             nquery (_("Because GDB is in replay mode,
> changing the
> > > value "
> > > +             query (_("Because GDB is in replay mode,
> changing the
> > > value "
> > >                        "of a register will make the execution log
> > > unusable "
> > >                        "from this point onward.  Change
> > register %s?"),
> > >                      gdbarch_register_name (get_regcache_arch
> > > (regcache),
> > > @@ -993,7 +993,7 @@
> > >       if (RECORD_IS_REPLAY)
> > >        {
> > >          /* Let user choose if he wants to write memory
> or not.  */
> > > -         if (!nquery (_("Because GDB is in replay mode,
> writing to
> > > memory "
> > > +         if (!query (_("Because GDB is in replay mode, writing to
> > > memory "
> > >                         "will make the execution log
> > unusable from this
> > > "
> > >                         "point onward.  Write memory at
> > address %s?"),
> > >                       paddress (target_gdbarch, offset)))
> > >
> > >
> > >
> > >
> >
>