使用 Uncover 生成覆盖率信息的过程分为三个步骤:
校验二进制文件
运行校验过的二进制文件
生成并查看覆盖率报告
输入的二进制文件可以是可执行文件或共享库。必须分别校验每个要分析的二进制文件。
使用 uncover 命令校验二进制文件。例如,以下命令将校验二进制文件 a.out,并使用校验过的 a.out 来覆写输入的 a.out。该命令还将创建一个后缀为 .uc 的目录(本例中为 a.out.uc),将在该目录中收集覆盖率数据。输入二进制文件的副本保存在此目录中。
uncover a.out
可以使用 -d directory 选项让 Uncover 在 directory 中创建覆盖率数据目录。当您为多个二进制文件收集覆盖率数据时,此选项十分有用,使您可以在同一个目录中创建所有的覆盖率数据目录。此外,如果从不同的位置运行同一个校验过的二进制文件的不同实例,使用此选项可确保在同一个覆盖率数据目录中累积所有这些运行中的覆盖率数据。
如果不使用 -d 选项,将在当前运行目录中创建覆盖率数据目录。
如果对某个已校验的输入二进制文件运行 uncover 命令,Uncover 将发出错误消息,通知您该二进制文件已经校验,无法再次校验,您可以运行该二进制文件来生成覆盖率数据。
校验二进制文件后,您可以按正常方式运行它。每次运行校验过的二进制文件时,都会在 Uncover 执行校验期间创建的、后缀为 .uc 的覆盖率数据目录中收集代码覆盖率数据。由于 Uncover 数据收集是多线程安全的,并且是多进程安全的,因此,对进程中的并发运行或线程的数量没有限制。覆盖率数据将累积所有的运行和线程。
要生成覆盖率报告,请对覆盖率数据目录运行 uncover 命令。例如:
uncover a.out.uc
此命令将根据 a.out.uc 目录中的覆盖率数据生成一个名为 binary_name.er 的 Oracle Solaris Studio 性能分析器实验目录,启动性能分析器 GUI,并显示该实验。如果当前目录或主目录中存在 .er.rc 文件(请参见《Oracle Solaris Studio 12.2 性能分析器》手册,分析器显示实验的方式可能会受影响。
还可以使用 uncover 命令选项生成可以在 Web 浏览器中查看的 HTML 报告,或者生成可以在终端窗口中查看的 ASCII 报告:
生成覆盖率报告的实验目录,并在性能分析器 GUI 中显示实验。缺省情况下为打开。
在指定的目录中以 HTML 格式保存覆盖率数据,并在 Web 浏览器中自动显示这些数据。缺省情况下为关闭。
帮助。
生成覆盖率报告,但不启动性能分析器或 Web 浏览器等查看器。
在指定的文件中生成 ASCII 覆盖率报告。缺省情况下为关闭。
输出 Uncover 版本信息并退出。
详细。输出 Uncover 正在执行的操作的日志。
仅启用了一种输出格式,因此,如果指定了多个输出选项,Discover 仅使用命令中的最后一个选项。
uncover a.out
此命令将校验二进制文件 a.out,覆写输入的 a.out,在当前目录中创建 a.out.uc 覆盖率数据目录,并在 a.out.uc 目录中保存输入 a.out 的副本。如果已校验 a.out,将显示警告消息,并且不执行校验。
uncover -d coverage a.out
此命令将执行第一个示例中执行的所有操作,不过,它会在目录 coverage 中创建 a.out.uc 覆盖率目录。
uncover a.out.uc
此命令使用 a.out.uc 覆盖率目录中的数据在工作目录中创建代码覆盖率实验 (a.out.er),并启动性能分析器 GUI 以显示该实验。
uncover -H a.out.html a.out.uc
此命令使用 a.out.uc 覆盖率目录中的数据在 a.out.html 目录中创建 HTML 代码覆盖率报告,并在 Web 浏览器中显示该报告。
uncover -t a.out.txt a.out.uc
此命令使用 a.out.uc 覆盖率目录中的数据在 a.out.txt 文件中创建 ASCII 代码覆盖率报告。