Sun Studio 12:线程分析器用户指南

2.2 创建实验

线程分析器沿用与 Sun Studio 性能分析器相同的“收集分析”模型。使用线程分析器包括以下三个步骤:

2.2.1 对源代码进行校验

为了在程序中启用数据争用检测,必须首先使用特殊的编译器选项编译源文件。对 C、C++ 和 Fortran 语言来说,此特殊选项是:-xinstrument=datarace

-xinstrument=datarace 编译器选项添加到现有的用来编译程序的一组选项。只能将该选项应用于您怀疑有数据争用的源文件。


注 –

确保在编译程序时指定 -g。为检测争用而编译程序时,不要指定高优化级别。使用 -xopenmp=noopt 编译 OpenMP 程序。使用高优化级别时,报告的信息(如行号和调用栈)可能是不正确的。


以下是对源代码进行校验的示例命令:

2.2.2 创建数据争用检测实验

collect 命令与 -r on 标志一起使用,以运行程序并在执行过程中创建数据争用检测实验。对于 OpenMP 程序,请确保所用的线程超过一个。以下是创建数据争用实验的示例命令:

为增大检测到数据争用的可能性,建议将 collectr race 标志一起使用,以创建若干个数据争用检测实验。在不同的实验中使用不同的线程数和不同的输入数据。

2.2.3 检查数据争用检测实验

可以使用线程分析器、性能分析器或 er_print 实用程序检查数据争用检测实验。线程分析器和性能分析器都提供 GUI 界面;前者提供的是一组简化的缺省选项卡,但在其他方面与性能分析器完全相同。

线程分析器 GUI 具有菜单栏、工具栏和包含各种选项卡的拆分窗格(不同选项卡对应不同的显示)。在左窗格上,缺省情况下显示以下三个选项卡:

在线程分析器显示屏的右窗格上,显示以下两个选项卡:

另一方面,er_print 实用程序提供命令行界面。在使用 er_print 实用程序检查争用时,以下子命令很有用:

有关更多信息,请参阅 collect.1tha.1analyzer.1er_print.1 手册页。