From: Stan Shebs <stanshebs@earthlink.net>
To: gdb@sourceware.org
Subject: Re: possible QTFrame enhancement
Date: Thu, 16 Oct 2014 23:23:00 -0000 [thread overview]
Message-ID: <54405367.9030000@earthlink.net> (raw)
In-Reply-To: <5440356E.3080705@redhat.com>
On 10/16/14, 2:15 PM, Pedro Alves wrote:
> On 10/16/2014 06:03 PM, David Taylor wrote:
>> In mid September I asked about a possible QTFrame / tfind enhancement.
>> That message generated zero responses.
>>
>> I'm hoping to get back in a day or two to our effort of adding the
>> setting of memory and registers at tracepoints. (It's more than half
>> done; but, before I finished I got yanked onto another project.) I
>> won't be working on implementing these proposed QTFrame / tframe
>> enhancements until that (and possibly some other stuff) is done.
>>
>> For the remote protocol there currently several variants of the QTFrame
>> message:
>>
>> QTFrame:n
>> QTFrame:pc:addr
>> QTFrame:tdp:t
>> QTFrame:range:start:end
>> QTFrame:outside:start:end
>>
>> And variants of the tfind command:
>>
>> tfind end
>> tfind line
>> tfind none
>> tfind outside
>> tfind pc
>> tfind range
>> tfind start
>> tfind tracepoint
>>
>> We (EMC) have a developer who runs trace experiments that generate
>> *LOTS* of tracepoint frames -- possibly 100,000 or more! He then likes
>> to find an anomaly and search *BACKWARDS* to find where things first
>> started going bad.
>
> That makes a lot of sense. Kind of a glaring omission, even.
>
> In a way, "tfind" is like "si/step/etc", and "tfind -r" would
> be like "reverse-si/step/etc".
>
>>
>> Other than the first QTFrame variant above -- which does no searching --
>> all of the above QTFrame variants search *FORWARDS* from the current
>> tracepoint frame.
>>
>> I would like to propose that tfind be modified from
>>
>> tfind <existing-subcommand> <existing-arguments>
>> to
>>
>> tfind <existing-subcommand> [ -r | --reverse] <existing-arguments>
>>
>> and that the QTFrame remote protocol message have an optional `-' before
>> the first `:' to indicate reverse:
>>
>> QTFrame-:n
>
> This one doesn't seem to make sense. QTFrame:n means "find frame number N".
> How would that be any different?
"N from the last frame" perhaps? Although GDB does get told how many
trace frames have been collected, so it can calculate "N from the end"
itself.
>> Does this proposal seem reasonable to people? Would an implementation
>> of this stand a resonable chance of being accepted back?
>
> Yes. If it comes along with a reference implementation in
> gdbserver, even better.
I concur. I can't think of many other actual tracepoint users right
now, so your developer gets lots of influence on how it develops
further.
One funky idea that occurs to me, looking at this proposal - QTFrame
packet with an agent expression? The whole theory of QTFrame is to
instruct the target how to find a trace frame, so if you have lots of
trace frames, maybe you'd want to find by content:
tfind collectedvar < 0
Compile expression to bytecode, pass it in packet, let the target agent
iterate over the trace buffer and report first one found. It would be
some weird byecode interpreter hackery I suppose, reading from buffer
instead of live memory, but probably OK speedwise, since everything is
in RAM.
Stan
stan@codesourcery.com
next prev parent reply other threads:[~2014-10-16 23:23 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-18 21:06 David Taylor
2014-10-16 17:03 ` David Taylor
2014-10-16 21:15 ` Pedro Alves
2014-10-16 23:23 ` Stan Shebs [this message]
2014-10-22 18:37 ` David Taylor
2014-10-29 19:01 ` Doug Evans
2014-10-29 22:18 ` Stan Shebs
2015-02-13 19:50 ` filtering traceframes (was: Re: possible QTFrame enhancement) David Taylor
2015-02-22 16:38 ` Doug Evans
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=54405367.9030000@earthlink.net \
--to=stanshebs@earthlink.net \
--cc=gdb@sourceware.org \
/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