如何:收集行级采样数据
更新:2007 年 11 月
行级取样是探测器的功能,用于确定在频繁使用处理器的函数(例如具有高独占取样的函数)代码中处理器不得不花费大部分时间的位置。
概述
对于行级取样,探查器会定期运行程序调用堆栈,并聚合这些结果。这些结果显示进行取样时处理器执行了哪些指令。然后分析收集的有关独占样本的数据,以识别代码行和指令指针 (IP)。
行级取样适用于托管代码和本机代码。显示此数据的性能报告包含“行”视图和“模块”视图。
字符开始/结尾信息不可用于本机代码。对于多行语句,行开始信息不可用于本机代码;只有行结尾信息可用。
可用数据
可用行级取样数据包括以下信息:
函数名。
函数地址。
行开始 – 取样代码的行号。
行结尾 – 结尾源行号。通常与“行开始”数据相同(一个程序语句跨多个源代码行的情况除外)。
字符开始 – 聚合样本的开始列。通常为 0(一行包含多个程序语句的情况除外)。
字符结尾 – 聚合样本的结尾列。
IP – 聚合样本所采用的地址(仅 IP 视图)。
在“模块”视图中,如果函数具有行级统计信息,那么这些统计信息将嵌套在每个函数下。另外,会显示嵌套在每行下的 IP 级统计数据。
关闭托管代码的行级取样
默认情况下,行级取样处于打开状态。您可以通过执行以下一种操作来关闭托管代码的行级数据收集:
分析之前,键入 VSPerfCLREnv /samplelineoff。这会同时影响应用程序和服务。
- 或 -
当启动应用程序时,键入 VSPerfCmd /lineoff <其他参数>。