Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Vladimir Prus <vladimir@codesourcery.com>
To: "Jakob Engblom" <jakob@virtutech.com>,
	 Tomas Holmberg <th@virtutech.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: reverse for GDB/MI
Date: Thu, 05 Feb 2009 09:38:00 -0000	[thread overview]
Message-ID: <200902051239.27523.vladimir@codesourcery.com> (raw)
In-Reply-To: <000a01c960f1$2c88d6c0$859a8440$@com>

On Thursday 18 December 2008 12:15:29 Jakob Engblom wrote:
> > >> I am not quite sure about adding new set of commands for that. Can we use
> > >> --reverse option, thereby not introducing new commands?
> 
> What would be the gain from NOT adding the commands, as you see it? It certainly
> looks like the most straightforward and easy-to-understand solution. 
> 
> > >
> > > Adding a reverse option to the existing commands is possible. But I do
> > > not think it is a good idea. It is not always obvious what should
> > > happen when running a standard command in reverse.
> > 
> > Why? -exec-step always steps forward. -exec-step --reverse always steps
> > backward. Seems like a fairly simple model to me.
> 
> Overall, it is not that simple, unfortunately, and that is our experience from
> doing reverse execution on a large scale for the past four years. 
>
> First of all, the logic in the implementation side is very different for forward
> and backward step.  Second, going into that logic is simpler with a separate set
> of commands -- much easier both to send out and parse in the code, as the
> reverse bits are obviously separated.  Having a --reverse flag will force
> command handlers that only deal with the normal case to check for reverse and
> either return an error or take some other action. Why complicate it like that?

I assume that the 'set exec-direction' command happens to already work in FSF GDB?
Then, I'd claim that --reverse is actually trivial.

> If you cannot do reverse, having a set of reverse commands that is clearly
> defined by looking just at the command makes ignoring them easier.   

Ignoring where, by whom, and for what purpose?

> There is no 
> shortage of name space in MI, and thus I cannot see that there is any value to
> making things more complicated with an extra flag.

It seems to be that it's best to have some structure in MI commands and flags.
Say, we have continue and reverse-continue. What if you want some other form
of continue, say "continue for N seconds". Should we have then:

	continue
	reverse-continue
	timed-continue
	reverse-timed-continue

? That would be fairly cumbersome. Also, the --reverse option can be documented
with a single paragraph, whilst individual commands should all have individual
documentation.
 
> This is also inline with the gdb command line structure, and I think it eases
> understanding the system as a whole if all command interfaces use a similar
> semantic structure. 
> 
> Note that on a conceptual level there are new possibilities in reverse execution
> that do not exist in classic unidirectional debugging. For example, "go to time
> point P".  Since a classic unidirectional debugger can only stop or go forward,
> this concept did not exist in such a form.  This is not part of the current
> patch, but certainly can be seen to come up moving forward (or it might be
> already part of bookmarking in the reverse gdb). 

To summarize, I would like the patch to be adjusted in the following way:

	1. Use --reverse option
	2. Arrange for --exec-step, and similar, to ignore 'set exec-direction',
	since all new MI commands should strive to be stateless. This, of course,
	will mean that one cannot get existing frontend to do reverse step by
	typing a command into CLI console, but it is not obvious if existing
	frontend will work without modification anyway.
	3. Include documentation
	4. Include testcases

Thanks,
Volodya


  reply	other threads:[~2009-02-05  9:38 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-12-15 10:59 Tomas Holmberg
2008-12-15 18:52 ` Marc Khouzam
2008-12-16  8:44   ` Jakob Engblom
2008-12-16 14:45     ` Marc Khouzam
2008-12-15 20:50 ` Eli Zaretskii
2008-12-17 14:57   ` Tomas Holmberg
2008-12-17 16:41     ` Eli Zaretskii
2008-12-17 16:17 ` Vladimir Prus
2008-12-18  8:33   ` Tomas Holmberg
2008-12-18  8:35     ` Vladimir Prus
2008-12-18  9:16       ` Jakob Engblom
2009-02-05  9:38         ` Vladimir Prus [this message]
2009-02-06  4:11           ` Doug Evans
2009-02-06 10:08           ` Jakob Engblom
2009-02-06 10:49             ` Vladimir Prus
2009-02-06 13:56               ` Jakob Engblom
2008-12-19  8:26       ` Tomas Holmberg
2008-12-19 11:07         ` Joel Brobecker
2008-12-19 13:22           ` Pedro Alves
2008-12-19 13:32             ` Jakob Engblom
2008-12-19 19:11         ` Michael Snyder
2008-12-22 20:27           ` Marc Khouzam
2008-12-22 21:14             ` Michael Snyder
2008-12-22 21:16               ` Marc Khouzam
2009-01-03 18:09             ` Jakob Engblom
2009-01-20 18:22               ` Marc Khouzam
2009-01-21  5:23                 ` teawater
2009-01-21 15:21                 ` Tomas Holmberg
2009-02-05 12:08                 ` Vladimir Prus
2008-12-18 21:39     ` Michael Snyder
2008-12-19  9:10       ` Tomas Holmberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200902051239.27523.vladimir@codesourcery.com \
    --to=vladimir@codesourcery.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=jakob@virtutech.com \
    --cc=th@virtutech.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox