现在,线程分析器支持对在源级别或二进制级别校验的代码进行数据争用检测。源级别校验在此发行版中没有更改。
要校验程序的二进制代码,您需要使用 discover 工具,该工具包括在 Oracle Solaris Studio 中,在 discover(1) 手册页中进行了介绍。另请参见《Oracle Solaris Studio 12.2 Discover 和 Uncover 用户指南》。
要校验程序的二进制代码以检测数据争用现象,discover 工具需要在下列条件下编译输入的二进制文件:
操作系统版本必须不低于 Oracle Solaris 10 5/08 或 OpenSolaris 版本 snv_70
编译器必须来自不低于 Sun Solaris Studio 12 Update 1 的发行版
必须使用其中一个编译器优化标志(-xO1、-xO2、-xO3、-xO4 和 -xO5)
如果二进制文件是使用编译器选项 -xbinopt=prepare 编译的,您可能还能够在基于 SPARC 的系统上运行的早期 Solaris 版本上使用 discover 工具。有关此编译器选项的信息,请参见 cc(1)、CC(1) 或 f95(1) 手册页。
如果二进制文件名为 a.out,您可以使用以下命令创建名为 a.out_i 的校验二进制文件:
% discover -i datarace -o a.out_i a.out |
有关详细信息,请参见《Oracle Solaris Studio 12.2:线程分析器用户指南》或 tha(1) 手册页。