要校验源代码,必须使用特殊的编译器选项 -xinstrument=datarace 对应用程序进行编译。此选项会指示编译器对生成的代码进行校验,以便检测数据争用。
将 -xinstrument=datarace 编译器选项添加到用于编译程序的现有选项集中。
使用 -xinstrument=datarace 对程序进行编译时,务必还要指定 -g 选项,目的是生成其他信息以启用分析器的全部功能。对程序进行编译以检测数据争用时,不要指定高优化级别。请使用 -xopenmp=noopt 编译 OpenMP 程序。使用高优化级别时,报告的信息(如行号和调用栈)可能是错误的。
可以使用以下命令校验本教程的源代码:
% cc -xinstrument=datarace -g -xopenmp=noopt -o prime_omp_inst prime_omp.c -lm |
% cc -xinstrument=datarace -g -o prime_pthr_inst prime_pthr.c -lm |
请注意,本示例在结尾处使用了 _inst 指定输出文件,因此可以知道该二进制代码是校验后的二进制代码。不过,这不是必需的。