可以在OS中禁用/配置Intel PT(处理器跟踪)吗?

Mic*_*oft 3 hardware debugging trace processor intel

我有很多关于英特尔PT的问题(一直试图解码手册,但非常困难).我的问题是:

  1. 我试图找出英特尔PT是否可以在操作系统内禁用或重新配置,或者更一般地说,是从系统内部提供跟踪.
  2. 英特尔PT是否会在写入特定寄存器(例如CR3,IDTR等)时生成事件
  3. 英特尔PT可以将值写回系统 - 即外部调试机器是否可以主动执行对寄存器,高速缓存或内存的写入?

    任何帮助都非常感谢,谢谢!

aci*_*708 5

我目前也正在研究如何使用英特尔PT.我所知道的:

  1. 是.从英特尔64和IA-32架构软件开发人员手册的第36.2.5.2节:

地址570H处的IA32_RTIT_CTL是用于跟踪分组生成的主要启用和控制MSR.位位置在表36-5中.

您可以清除或设置IA32_RTIT_CTL MSR以禁用或启用PT跟踪.这可以从系统内部提供PT提供的痕迹.事实上,我认为不能以任何其他方式完成.

  1. 是.当发生对CR3寄存器的修改时,创建寻呼信息包(PIP).但是不确定IDTR和其他人.此外,CR3寄存器可用于跟踪滤波.

  2. 英特尔PT背后的整个想法是数据包编码和解码.当x事件发生时,生成y数据包.这是你的工作,"解码"这个CPU提供的数据,并从中获得一些高水平的感觉.此外,您可以"编码"数据包并将其提供给进行解码的系统.同样,解码器(以及可选的编码器)功能是您的工作.您可以在此处查看英特尔的开源解码器/编码器库参考实现.我建议在Linux下尝试使用最新的稳定内核(撰写本文时为4.1.3).值得注意的是,PT将其数据存储在您告诉它的位置,通常是保留的内存区域或调试端口.