JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:Discover 和 Uncover 用户指南     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  简介

2.  内存错误搜索工具 (Discover)

3.  代码覆盖工具 (Uncover)

Uncover 的使用要求

使用 Uncover

检测二进制文件

运行检测过的二进制文件

生成并查看覆盖报告

示例

了解性能分析器中的覆盖报告

`Functions`(函数)选项卡

`Uncoverage`(未覆盖)计数器

`Function Count`(函数计数)计数器

`Instr Exec`(指令执行)计数器

`Block Covered %`(块覆盖率)计数器

`Instr Covered %`(指令覆盖率)计数器

`Source`(源)选项卡

`Disassembly`(反汇编)选项卡

`Inst-Freq`(指令频率)选项卡

了解 ASCII 覆盖报告

了解 HTML 覆盖报告

使用 Uncover 时的限制

只能检测有注释的代码

计算机指令可能不同于源代码

示例 1

示例 2

示例 3

索引

使用 Uncover

使用 Uncover 生成覆盖信息的过程分为三个步骤:

  1. 检测二进制文件

  2. 运行检测过的二进制文件

  3. 生成并查看覆盖报告

检测二进制文件

输入的二进制文件可以是可执行文件或共享库。必须分别检测每个要分析的二进制文件。

使用 uncover 命令检测二进制文件。例如,以下命令将检测二进制文件 a.out,并使用检测过的 a.out 来覆盖输入 a.out。该命令还将创建一个后缀为 .uc 的目录(本例中为 a.out.uc),将在该目录中收集覆盖数据。输入二进制文件的副本保存在此目录中。

uncover a.out

检测二进制文件时,可以使用以下选项:

-c

打开指令、块和函数的执行计数报告。缺省情况下,仅报告已覆盖或未覆盖的代码的信息。(检测二进制文件和生成覆盖报告时,均指定该选项。)

-d directory

通知 Uncover 在 directory 中创建覆盖数据目录。当您为多个二进制文件收集覆盖数据时,此选项十分有用,使您可以在同一个目录中创建所有的覆盖数据目录。此外,如果从不同的位置运行同一个检测过的二进制文件的不同实例,使用此选项可确保在同一个覆盖数据目录中累积所有这些运行中的覆盖数据。

如果不使用 -d 选项,将在当前运行目录中创建覆盖数据目录。

-m on | off

打开和关闭线程安全分析。缺省情况下为打开。将该选项与 -c 运行时选项结合使用。如果使用 -m off 检测使用线程的二进制文件,则该二进制文件会在运行时失败,并且显示一条消息,要求您使用 -m on 重新检测该二进制文件。

-o output_binary_file

将检测过的二进制文件写入指定的文件。缺省情况下,使用检测过的文件覆盖输入二进制文件。

如果对某个已检测的输入二进制文件运行 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 报告。或者,将数据定向到代码分析器可以分析和显示数据的目录中。

-a

将错误数据写入 binary_name.analyze/coverage 目录以供代码分析器使用。

-c

打开指令、块和函数的执行计数报告。缺省情况下,仅报告已覆盖或未覆盖的代码的信息。(检测二进制文件和生成覆盖报告时,均指定该选项。)

-e on | off

生成覆盖报告的实验目录,并在性能分析器 GUI 中显示实验。缺省情况下为打开。

-H html_directory

在指定的目录中以 HTML 格式保存覆盖数据,并在 Web 浏览器中自动显示这些数据。缺省情况下为关闭。

-h-?

帮助。

-n

生成覆盖报告,但不启动性能分析器或 Web 浏览器等查看器。

-t ascii_file

在指定的文件中生成 ASCII 覆盖报告。缺省情况下为关闭。

-V

输出 Uncover 版本信息并退出。

-v

详细。输出 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 代码覆盖报告。

uncover -a a.out.uc

此命令使用 a.out.c 覆盖目录中的数据在 binary_name.analyze/coverage 目录中创建覆盖报告,以供代码分析器使用。