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)

Discover 的使用要求

必须正确准备二进制文件

不能使用使用预装或审计的二进制文件

可以使用重新定义标准内存分配函数的二进制文件

快速入门

检测准备好的二进制文件

缓存共享库

检测共享库

忽略库

命令行选项

输出选项

检测选项

缓存选项

其他选项

bit.rc 初始化文件

SUNW_DISCOVER_OPTIONS 环境变量

SUNW_DISCOVER_FOLLOW_FORK_MODE 环境变量

运行检测过的二进制文件

分析 Discover 报告

分析 HTML 报告

使用 `Errors`(错误)选项卡

使用 `Warnings`(警告)选项卡

使用 `Memory Leaks`(内存泄漏)选项卡

使用控制面板

分析 ASCII 报告

内存访问错误和警告

内存访问错误

ABR

ABW

BFM

BRP

DFM

FMR

FMW

FRP

IMR

IMW

OLP

PIR

SBR

SBW

UAR

UAW

UMR

内存访问警告

AZS

解释 Discover 错误消息

部分初始化内存

可疑装入

未检测的代码

使用 Discover 时的限制

仅检测有注释的代码

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

编译器选项影响生成的代码

系统库可能会影响报告的错误

定制内存管理可能会影响数据的准确性

无法检测到静态和自动数组的超出边界错误

3.  代码覆盖工具 (Uncover)

索引

Discover 的使用要求

必须正确准备二进制文件

Discover 使用通过 Sun Studio 12 Update 1、Oracle Solaris Studio 12.2 或 Oracle Solaris Studio 12.3 编译器编译的二进制文件,或通过 GCC for Sun Systems 4.2.0 版(或更高版本)编译器编译的二进制文件。Discover 适用于运行 Solaris 10 10/08 操作系统(或更高的 Solaris 10 Update 版本)或 Oracle Solaris 11 的基于 SPARC 或基于 x86 的系统。

如果未满足这些要求,Discover 会发出错误,并且不检测二进制文件。但是,您可以使用 -l 选项(请参见检测选项)来检测未满足这些要求的二进制文件,并运行该二进制文件来检测有限数量的错误。

按照说明进行编译的二进制文件包括一些称为注释的信息,用于帮助 Discover 正确地检测二进制文件。添加这些少量信息不会影响二进制文件的性能或运行时内存使用情况。

通过在编译二进制文件时使用 -g 选项生成调试信息,Discover 可以在报告错误和警告的同时显示源代码和行号信息,并可以生成更准确的结果。如果在编译二进制文件时未使用 -g 选项,Discover 将仅显示相应计算机级别指令的程序计数器。另外,使用 -g 选项进行编译可帮助 Discover 生成更准确的报告(请参见解释 Discover 错误消息)。

不能使用使用预装或审计的二进制文件

由于 Discover 使用运行时链接程序的某些特殊功能,因此您不能将其用于使用预装或审计的二进制文件。

如果程序需要设置 LD_PRELOAD 环境变量,则可能无法与 Discover 正确配合,因为 Discover 需要插入某些系统函数,如果函数已预先装入,则无法执行此操作。

同样,如果程序使用了运行时审计(二进制文件通过 -p 选项或 -P 选项进行链接,或者需要设置 LD_AUDIT 环境变量),则此审计将与 Discover 使用的审计相冲突。如果二进制文件链接到审计,Discover 将在检测时失败。如果在运行时设置了 LD_AUDIT 环境变量,结果将无法确定。

可以使用重新定义标准内存分配函数的二进制文件

Discover 支持重新定义以下标准内存分配函数的二进制文件:malloc()calloc()memalign()valloc()free()