JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3 概述     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

Oracle Solaris Studio 12.3 概述

Oracle Solaris Studio 软件简介

Oracle Solaris Studio 的开发者工作流程

Oracle Solaris Studio IDE

Oracle Solaris Studio 编译器

C 编译器

cc 命令语法

C 文档

C++ 编译器

CC 命令语法

C++ 文档

Fortran 95 编译器

f95 命令语法

Fortran 文档

C/C++/Fortran 库

用于并行编程的 OpenMP 3.1

适合密集计算程序的 Sun 性能库

用于生成应用程序的 dmake 实用程序

用于调试应用程序的工具

命令行中的 dbx

IDE 中的 dbx

dbxtool 中的 dbx

用于验证应用程序的工具

用于检测内存错误的 Discover 工具

用于度量代码覆盖的 Uncover 工具

用于集成错误检查的代码分析器工具

用于调整应用程序性能的工具

性能分析器工具

使用收集器收集性能数据

使用性能分析器检查性能数据

使用 er_print 实用程序检查性能数据

使用线程分析器分析多线程应用程序性能

简单性能优化工具 (Simple Performance Optimization Tool, SPOT)

DLight 中的分析工具

IDE 中的分析工具

更多信息

用于验证应用程序的工具

Oracle Solaris Studio 提供了一些工具,可以帮助您验证应用程序的稳定性。以下工具结合了动态、静态和代码覆盖分析,以检测应用程序漏洞,包括内存泄漏和内存访问违规。

用于检测内存错误的 Discover 工具

内存错误搜索工具 (Discover) 是用于检测程序中内存访问错误的高级开发工具。使用 -g 选项编译二进制文件使 Discover 可以在报告错误和警告时显示源代码和行号信息。

Discover 简单易用。在使用 -g 选项编译二进制文件后,您可以对二进制文件运行 discover 命令已对其进行检测。然后运行经检测的二进制文件,以创建 Discover 报告。您可以请求 HTML 格式、文本格式或者这两种格式的 Discover 报告。该报告显示内存错误、警告和内存泄漏,您可以显示每个错误或警告所对应的源代码和堆栈跟踪。

以下示例来自 discover(1) 手册页,该示例说明了如何准备、检测及运行可执行文件,以生成一份 Discover 报告,用于检测内存访问错误。discover 命令行上的 -w 选项指出报告应采用文本格式,- 选项则指出应输出到屏幕上。

% cc -g -O2 test.c -o test.prep
% discover -w - -o test.disc test.prep
% ./test.disc
ERROR (UMR): accessing uninitialized data from address 0x5000c (4 bytes) at:
     foo() + 0xdc  <ui.c:6>
          3:    int *t;
          4:    foo() {
          5:     t = malloc(5*sizeof(int));
          6:=>   printf("%d0, t[1]);
          7:    }
          8:
          9:    main()
     main() + 0x1c
     _start() + 0x108
    block at 0x50008 (20 bytes long) was allocated at:
     malloc() + 0x260
     foo() + 0x24  <ui.c:5>
          2:
          3:    int *t;
          4:    foo() {
          5:=>   t = malloc(5*sizeof(int));
          6:     printf("%d0, t[1]);
          7:    }
          8:
     main() + 0x1c
     _start() + 0x108

     ***************** Discover Memory Report *****************

1 block at 1 location left allocated on heap with a total size of 20 bytes

    1 block with total size of 20 bytes
     malloc() + 0x260
     foo() + 0x24  <ui.c:5>
          2:
          3:    int *t;
          4:    foo() {
          5:=>   t = malloc(5*sizeof(int));
          6:     printf("%d0, t[1]);
          7:    }
          8:
     main() + 0x1c
     _start() + 0x108

有关更多信息,请参见 discover(1) 手册页和《Oracle Solaris Studio 12.3:Discover 和 Uncover 用户指南》

用于度量代码覆盖的 Uncover 工具

Uncover 是一种用于度量代码覆盖的命令行工具。该工具显示当应用程序运行时,已实施、未实施以及未涵盖在测试范围内的代码区域。Uncover 会生成一份报告,其中包含统计信息和各项度量,可以帮助您确定应在测试套件中添加哪些函数,以确保测试期间覆盖更多代码。

Uncover 可以与使用 Oracle Solaris Studio 编译器所生成的任何二进制文件结合使用,而当生成不包含优化的二进制文件时效果最佳。使用 -g 选项编译二进制文件使 Uncover 可以在报告代码覆盖情况时显示源代码和行号信息。

编译二进制文件后,对该二进制文件运行 uncover 命令。Uncover 将创建添加了检测代码的新的二进制文件,还将创建名为 binary.uc 的目录,其中将包含程序的代码覆盖数据。每次运行已检测的二进制文件时,都将收集代码覆盖数据并存储在 binary.uc 目录中。

您可以在“性能分析器”中显示实验数据,或者生成 HTML 格式的 Uncover 报告并用 Web 浏览器显示。

下例说明如何准备、检测及运行可执行文件,以生成用于检查代码覆盖的 Uncover 报告。已优化二进制文件是 test,由名称也为 test 的已检测二进制文件所取代。

% cc -g -O2 test.c -o test
% uncover test
% test

实验目录是 test.uc,其中包含已检测的 test 运行时所生成的数据。test.uc 目录还包含未检测的 test 二进制文件的副本。

在性能分析器中查看实验:

% uncover test.uc

在浏览器的 HTML 页面查看实验:

% uncover -H test.html test.uc

有关更多信息,请参见 uncover(1) 手册页和《Oracle Solaris Studio 12.3:Discover 和 Uncover 用户指南》

用于集成错误检查的代码分析器工具

Oracle Solaris Studio 代码分析器是一种图形工具,可用来对代码执行集成分析。“代码分析器”使用您通过其他工具收集的三种类型的信息:

您可以对已使用其中的任一种工具或其任意组合来准备的二进制文件使用代码分析器。但是,综合查看这三种类型的数据可以最为详细地了解您的代码,因而使您能够创建更安全、更可靠的应用程序。

下例说明了如何对已经使用 Discover 和 Uncover 准备的二进制文件 a.out 运行代码分析器。

% code-analyzer a.out

在下图中,代码分析器正在显示在二进制文件 a.out 中发现的问题。

image:代码分析器的屏幕快照