跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3 代码分析器用户指南 Oracle Solaris Studio 12.3 Information Library (简体中文) |
要收集 C 或 C++ 程序的静态错误数据,请在 Oracle Solaris Studio 12.3 C 或 C++ 编译器中使用 -xanalyze=code 选项来编译程序。(在先前的 Oracle Solaris Studio 发行版中,-xanalyze=code 选项在编译器中不可用。)使用此选项时,编译器会自动提取静态错误并将数据写入 binary_name.analyze 目录的 static 子目录中。
如果使用 -xanalyze=code 选项编译程序,然后在单独的步骤中链接此程序,您还需要在链接步骤中包括 -xanalyze=code 选项。
某些错误依赖于仅在运行时可用的数据。例如,假设给定以下代码,编译器不会检测 ABW(beyond Array Bounds Write,数组越界写)错误,因为它无法检测从某个文件读取的 ix 值是否位于 [0,9] 范围之外:
void f(int fd, int array[10]) { int ix; read(fd, &ix, sizeof(ix)); array[ix] = 0; }
有些错误并不明确,换句话说,它们在代码中可能是实际存在的错误,但也可能不是。编译器不报告这些错误。
在此发行版中,编译器不检测某些复杂的错误。
收集静态错误数据之后,您可以启动代码分析器 GUI 来分析和显示数据(请参见启动代码分析器 GUI),或重新编译程序以便可以收集动态内存访问数据或代码覆盖数据。