当对应于内存操作的硬件计数器事件的 PC 已被处理,可以成功回溯到很可能引发事件的内存引用指令时,性能分析器将使用编译器在其硬件分析支持信息中提供的指令标识符和描述符派生关联的程序数据对象。
术语数据对象用于表示程序常量、变量、数组和聚集(如结构和联合),以及源代码中所述的各种聚集元素。 数据对象的类型及其大小随源语言的不同而不同。许多数据对象是在源程序中显式命名的,而其他数据对象可能是未命名的。有些数据对象是从其他(更简单的)数据对象派生或聚集的,从而产生了一组丰富的、通常很复杂的数据对象。
每个数据对象都具有关联的作用域,即在其中定义数据对象并可以引用数据对象的源程序区域。 该作用域可以是全局性的(如装入对象),也可以是特定的编译单元(对象文件)或函数。可以使用不同的作用域定义相同的数据对象,也可以在不同的作用域内以不同的方式引用特定数据对象。
在启用回溯的情况下为内存操作的硬件计数器事件收集的数据派生度量被归属到关联的程序数据对象类型。这些度量将传播到包含数据对象和人工结构 <Total>(它被视为包含所有数据对象,其中包括 <Unknown> 和 <Scalars>)的任何聚集。<Unknown> 的不同子类型向上传播到 <Unknown> 聚集。下一节将介绍 <Total>、<Scalars> 和 <Unknown> 数据对象。