Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Metzger, Markus T" <markus.t.metzger@intel.com>
To: Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: "palves@redhat.com" <palves@redhat.com>,
	"tromey@redhat.com"	<tromey@redhat.com>,
	"kettenis@gnu.org" <kettenis@gnu.org>,
	"gdb-patches@sourceware.org" <gdb-patches@sourceware.org>,
	"markus.t.metzger@gmail.com" <markus.t.metzger@gmail.com>
Subject: RE: [patch v6 00/12] branch tracing support for Atom
Date: Tue, 18 Dec 2012 10:14:00 -0000	[thread overview]
Message-ID: <A78C989F6D9628469189715575E55B2307B421D6@IRSMSX102.ger.corp.intel.com> (raw)
In-Reply-To: <20121218091953.GF8054@host2.jankratochvil.net>

> -----Original Message-----
> From: Jan Kratochvil [mailto:jan.kratochvil@redhat.com]
> Sent: Tuesday, December 18, 2012 10:20 AM
> To: Metzger, Markus T
> Cc: palves@redhat.com; tromey@redhat.com; kettenis@gnu.org; gdb-patches@sourceware.org; markus.t.metzger@gmail.com
> Subject: Re: [patch v6 00/12] branch tracing support for Atom
> 
> Hi Markus,
> 
> already posted about it before:
> 	http://sourceware.org/ml/gdb-patches/2012-11/msg00724.html
> 
> Currently there are two separate history APIs - the "record" one implemented
> as new target_ops implementing reverse execution via to_resume/to_wait hooks.
> And now the new API with specific new *btrace* target_ops methods.
> 
> Without implementing the virtual btrace frames discussed in the thread above
> one still could implement "reverse-stepi" (and therefore also "reverse-step")
> on top of btrace by chopping the btrace ranges by lengths of each instruction.
> 
> There is even existing "record goto" command which is similar to the new
> command "btrace +[<n>]/-[<n>]" interface which partially duplicates
> stepi/reverse-stepi.  While the diassembling and "list" feature would be
> useful also with the record target.
> 
> record.c has similar "record_list" history, it could be abstracted for both
> backends via target_ops.
> 
> OTOH I should have reacted much earlier and be more explicit in the mail above
> so not going to block it but neither approve it.  IMO the two interfaces
> should be unified.

I like the idea of adding BTS as a configuration option to "record" to provide a control-flow only trace for the reverse- commands. This will be quite limited since the only thing you can really do is iterate over disassembly and source lines - plus some fake back trace. On the other hand, recording is faster and control-flow-only trace may suffice in some cases.

We should not remove the existing btrace commands, though. They provide a compact means of viewing the control-flow trace. With a single "btrace list" command, you get a compact overview of the control flow that led to the current location. With a single "btrace 1-8" command, you get the full disassembly of the last 8 blocks in control-flow order. Using the remote- commands, you would need a sequence of reverse-stepi or reverse-step commands. And even then, the output would be clobbered with intermixed prompts and would be in reverse control-flow order, unless you navigated back and forth again.

Depending on your use case, either the btrace or the remote- commands are more effective.

As far as I understand, the btrace commands could also be implemented for "record" to provide a more compact view of the recorded control-flow. They could thus also help improve the "record" feature.

Given the different use cases, it would make sense to establish two sets of commands for all kinds of control-flow tracing/replay: one for viewing and one for navigating. In a first step, BTS tracing will only implement the former and "record" will only implement the latter. In a second step, "record" could implement the viewing commands, and in  third step, BTS tracing can implement the navigation commands.

Would that be OK with you?

Regards,
Markus.

Intel GmbH
Dornacher Strasse 1
85622 Feldkirchen/Muenchen, Deutschland
Sitz der Gesellschaft: Feldkirchen bei Muenchen
Geschaeftsfuehrer: Christian Lamprechter, Hannes Schwaderer, Douglas Lusk
Registergericht: Muenchen HRB 47456
Ust.-IdNr./VAT Registration No.: DE129385895
Citibank Frankfurt a.M. (BLZ 502 109 00) 600119052


  reply	other threads:[~2012-12-18 10:14 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-17 16:02 markus.t.metzger
2012-12-17 16:02 ` [patch v6 02/12] cli, btrace: add btrace cli markus.t.metzger
2012-12-17 18:32   ` Jan Kratochvil
2012-12-18  7:36     ` Metzger, Markus T
2012-12-18  8:35       ` Jan Kratochvil
2012-12-18  9:04   ` Jan Kratochvil
2012-12-18  9:11     ` Metzger, Markus T
2012-12-17 16:02 ` [patch v6 06/12] remote, btrace: add branch trace remote ops markus.t.metzger
2012-12-17 19:57   ` Jan Kratochvil
2012-12-17 16:02 ` [patch v6 09/12] gdbserver, linux, btrace: add btrace support for linux-low markus.t.metzger
2012-12-17 16:02 ` [patch v6 08/12] gdbserver, btrace: add generic btrace support markus.t.metzger
2012-12-17 20:43   ` Jan Kratochvil
2012-12-17 16:02 ` [patch v6 01/12] thread, btrace: add generic branch trace support markus.t.metzger
2012-12-17 16:02 ` [patch v6 12/12] btrace, x86: disable on some processors markus.t.metzger
2012-12-17 17:11   ` Mark Kettenis
2012-12-19 16:13     ` Metzger, Markus T
2012-12-19 16:36       ` Mark Kettenis
2012-12-21 10:38       ` Jan Kratochvil
2012-12-17 17:37   ` H.J. Lu
2012-12-19 15:58     ` Metzger, Markus T
2012-12-17 20:35   ` Jan Kratochvil
2012-12-17 16:03 ` [patch v6 05/12] xml, btrace: define btrace xml document style markus.t.metzger
2012-12-17 19:53   ` Jan Kratochvil
2012-12-18  7:43     ` Metzger, Markus T
2012-12-17 16:03 ` [patch v6 04/12] linux, i386, amd64: enable btrace for 32bit and 64bit linux native markus.t.metzger
2012-12-17 16:03 ` [patch v6 10/12] test, btrace: add branch tracing tests markus.t.metzger
2012-12-17 20:26   ` Jan Kratochvil
2012-12-17 16:03 ` [patch v6 03/12] linux, btrace: perf_event based branch tracing markus.t.metzger
2012-12-17 16:03 ` [patch v6 07/12] btrace, doc: document remote serial protocol markus.t.metzger
2012-12-17 16:03 ` [patch v6 11/12] test, btrace: more branch tracing tests markus.t.metzger
2012-12-17 18:45 ` [patch v6 00/12] branch tracing support for Atom Jan Kratochvil
2012-12-17 19:34   ` Tom Tromey
2012-12-18  7:24     ` Metzger, Markus T
2012-12-18  9:20 ` Jan Kratochvil
2012-12-18 10:14   ` Metzger, Markus T [this message]
2012-12-18 13:55     ` Jan Kratochvil
2012-12-19  9:59       ` Metzger, Markus T
2012-12-19 12:13         ` Mark Kettenis
2012-12-19 12:37           ` Jan Kratochvil
2012-12-20  7:17         ` Jan Kratochvil
2012-12-20  9:14           ` Metzger, Markus T
2012-12-20 11:43             ` Jan Kratochvil
2012-12-20 15:20               ` Metzger, Markus T
2012-12-21 19:12                 ` Jan Kratochvil
2012-12-22 13:08         ` Jan Kratochvil
2013-01-01 16:35           ` Jan Kratochvil

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=A78C989F6D9628469189715575E55B2307B421D6@IRSMSX102.ger.corp.intel.com \
    --to=markus.t.metzger@intel.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jan.kratochvil@redhat.com \
    --cc=kettenis@gnu.org \
    --cc=markus.t.metzger@gmail.com \
    --cc=palves@redhat.com \
    --cc=tromey@redhat.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