From: "Metzger, Markus T" <markus.t.metzger@intel.com>
To: Pedro Alves <palves@redhat.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: RE: [PATCH] btrace: diagnose "record btrace pt" without libipt
Date: Fri, 20 Nov 2015 13:59:00 -0000 [thread overview]
Message-ID: <A78C989F6D9628469189715575E55B233322847F@IRSMSX104.ger.corp.intel.com> (raw)
In-Reply-To: <564F1C3D.1040709@redhat.com>
> -----Original Message-----
> From: Pedro Alves [mailto:palves@redhat.com]
> Sent: Friday, November 20, 2015 2:12 PM
> To: Metzger, Markus T
> Cc: gdb-patches@sourceware.org
> Subject: Re: [PATCH] btrace: diagnose "record btrace pt" without libipt
>
> On 11/20/2015 12:11 PM, Metzger, Markus T wrote:
>
> > The record target is popped off the target stack on disconnect. This
> disables
> > branch tracing. The below log is for BTS but the logic is the same for PT.
> > Sending packet: $Qbtrace:off#37...Packet received: OK
>
> >
> > After reconnecting, you need to enable btrace again.
>
> I see. But then it sounds like we'll have the problem if the connection
> drops unexpectedly -- gdb won't be able to tell the server to
> disable Qbtrace. I guess the easiest way to emulate is kill gdb:
>
> #1 - enable btrace pt
> #2 - connection is terminated unexpectedly / kill gdb
> #3 - reconnect to gdbserver
>
> a) Does the new gdb get out of sync and confused?
Yes.
GDB doesn't recognize that the remote agent is already tracing.
This also prevents enabling branch tracing after reconnect.
(gdb) info rec
No record target is currently active.
(gdb) rec b
[record-btrace] open
[record-btrace] open
[btrace] enable thread 1 (Thread 141484)
Sending packet: $Qbtrace-conf:bts:size=0x10000#e3...Packet received: OK
Sending packet: $Qbtrace:bts#45...Packet received: E.Btrace already enabled.
Could not enable branch tracing for Thread 141484: Btrace already enabled.
(gdb) info rec
No record target is currently active.
(gdb)
Thanks for pointing this out. Let's try to fix it...
Handling the "E.Btrace already enabled" error in remote.c shouldn't be too hard.
This would at least allow another "record btrace" after reconnect - and it should
keep the trace logs. This takes the same code path as a new enable so the check
in this patch should suffice.
A non-PT enabled GDB would try to fall back to BTS, though, so we could either
implicitly disable PT in the target to allow it or give an error, which again leaves
branch tracing unusable in this GDB session. But it would keep the trace logs if
the user accidentally chose the wrong GDB for reconnecting.
It would be nice if GDB could detect that record btrace is already enabled and push
the record-btrace target automatically. I guess this requires some indication about
the record status from gdbserver. Is there some other target that does this automatic
push on (re-)connect that I could use as reference?
This still leaves the question how GDB should behave if it doesn't support the tracing
format that's already enabled in the GDBserver it just connected to.
Regards,
Markus.
Intel Deutschland GmbH
Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
Tel: +49 89 99 8853-0, www.intel.de
Managing Directors: Christin Eisenschmid, Christian Lamprechter
Chairperson of the Supervisory Board: Nicole Lau
Registered Office: Munich
Commercial Register: Amtsgericht Muenchen HRB 186928
next prev parent reply other threads:[~2015-11-20 13:59 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-20 9:17 Markus Metzger
2015-11-20 11:31 ` Pedro Alves
2015-11-20 11:35 ` Pedro Alves
2015-11-20 12:11 ` Metzger, Markus T
2015-11-20 13:12 ` Pedro Alves
2015-11-20 13:59 ` Metzger, Markus T [this message]
2015-11-25 16:38 ` Pedro Alves
2015-11-26 7:12 ` Metzger, Markus T
2015-11-26 9:43 ` Pedro Alves
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=A78C989F6D9628469189715575E55B233322847F@IRSMSX104.ger.corp.intel.com \
--to=markus.t.metzger@intel.com \
--cc=gdb-patches@sourceware.org \
--cc=palves@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