我目前也正在研究如何使用英特尔PT.我所知道的:
地址570H处的IA32_RTIT_CTL是用于跟踪分组生成的主要启用和控制MSR.位位置在表36-5中.
您可以清除或设置IA32_RTIT_CTL MSR以禁用或启用PT跟踪.这可以从系统内部提供PT提供的痕迹.事实上,我认为不能以任何其他方式完成.
是.当发生对CR3寄存器的修改时,创建寻呼信息包(PIP).但是不确定IDTR和其他人.此外,CR3寄存器可用于跟踪滤波.
英特尔PT背后的整个想法是数据包编码和解码.当x事件发生时,生成y数据包.这是你的工作,"解码"这个CPU提供的数据,并从中获得一些高水平的感觉.此外,您可以"编码"数据包并将其提供给进行解码的系统.同样,解码器(以及可选的编码器)功能是您的工作.您可以在此处查看英特尔的开源解码器/编码器库参考实现.我建议在Linux下尝试使用最新的稳定内核(撰写本文时为4.1.3).值得注意的是,PT将其数据存储在您告诉它的位置,通常是保留的内存区域或调试端口.