How to use bts recording?
Simon Sobisch
simonsobisch@gnu.org
Wed Jan 26 18:12:28 GMT 2022
Am 26.01.2022 um 18:11 schrieb Metzger, Markus T:
> Hello Simon,
>
>>> Are you maybe using virtualization?
>>
>> Rechecked with the server team: yes, the old RHEL kernel runs on Redhat
>> Virtualization Manager; the newer one on VMware vSphere.
>
> Here's the problem. AFAIK neither BTS nor PT are virtualized. This is simply
> missing enabling in hypervisors. They do properly indicate this by omitting
> the respective cpuid enumeration. This results in an EOPNOTSUPP when
> GDB tries to enable it, which is printed by GDB.
I see - but something is still not ideal.
At least on this machine GDB 11.1 said:
(gdb) record btrace bts
Could not enable branch tracing for Thread 0x7ffff7fe4740 (LWP 2756):
**Failed to start recording: Operation not supported**
While the Debian GNU gdb (Debian 10.1-1.7) 10.1.90.20210103-git reports
Could not enable branch tracing for Thread 0x7ffff79833c0 (LWP 334):
**BTS support has been disabled for the target cpu**
That's a clear message, I like that.
Is this a special Debian patch or is because of the target cpu being AMD?
Is there a path that should be taken when the OS reports EOPNOTSUPP?
A message similar to the one above would be useful.
> I'm afraid that's a fairly common problem, these days, but I don't see how
> GDB could check that it is running in a guest OS and that the hypervisor did
> not virtualize PT or BTS.
As you've said: use of virtualized environments is quite common, so it
may be reasonable to adjust the docs to at least hint at that issue.
I suggest changing
- Hardware-supported instruction recording, supported on Intel processors
+ Hardware-supported instruction recording, supported on Intel
processors if not running in a virtual machine.
... or something like that.
BTW: rechecked newer RHEL:
GNU gdb (GDB) Red Hat Enterprise Linux 8.2-12.el8 also has the link to
libipt and so also says
Failed to open /sys/bus/event_source/devices/intel_pt/type
[note: that message possibly could hint at "Intel PT not available"]
Also: not sure if libipt is the one that is checking that directory, but
possibly GDB could do this _before_ printing
> Intel Processor Trace support was disabled at compile time.
... because this led me to believe "just reconfigure and possible
install libipt before and everything will be fine" - but if I had done
this the only result would have been another error message.
More information about the Gdb
mailing list