跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3 代码分析器用户指南 Oracle Solaris Studio 12.3 Information Library (简体中文) |
收集 C 或 C++ 程序的动态内存访问数据的过程包含以下两个步骤:使用 Discover 检测二进制文件,然后运行检测过的二进制文件。
要使用 Discover 检测程序以收集数据供代码分析器使用,必须已使用 Oracle Solaris Studio 12.3 C 或 C++ 编译器对程序进行了编译。使用 -g 选项进行编译可生成调试信息,从而使代码分析器可以显示动态内存访问错误和警告的源代码和行号信息。
如果在不进行优化的情况下编译程序,Discover 将提供源代码级别的最完整内存错误检测。如果编译时进行优化,将检测不到某些内存错误。
有关 Discover 能够检测或不能检测的特定类型二进制文件的信息,请参见《Oracle Solaris Studio 12.3:Discover 和 Uncover 用户指南》中的"可以使用重新定义标准内存分配函数的二进制文件"和《Oracle Solaris Studio 12.3:Discover 和 Uncover 用户指南》中的"不能使用使用预装或审计的二进制文件"。
注 - 您可以生成程序一次来同时用于 Discover 和 Uncover。但是,您不能检测已检测过的二进制文件,因此,如果还打算使用 Uncover 收集覆盖数据,请在使用 Discover 进行检测之前先保存此二进制文件的副本以避免出现此问题。例如:
cp a.out a.out.save
从二进制文件中收集动态内存访问数据:
discover -a binary_name
注 - 必须使用 Oracle Solaris Studio 12.3 中的 Discover 版本。-a 选项在早期的 Discover 版本中不可用。
运行已检测过的二进制文件。动态内存访问数据将被写入 binary_name.analyze 目录的 dynamic 子目录中。
注 - 有关在使用 Discover 检测二进制文件时可以指定的其他检测选项,请参见《Oracle Solaris Studio 12.3:Discover 和 Uncover 用户指南》中的"检测选项"或 discover 手册页。可以将 -c、-F、-N 或 -T 选项与 -a 选项结合使用。
收集动态内存访问数据之后,可以启动代码分析器 GUI 来分析和显示这些数据以及先前可能已收集的任何静态代码数据(请参见启动代码分析器 GUI)。或者,可以使用未经检测的二进制文件副本来收集代码覆盖数据。