我正在尝试使用 Rational Purify 7 来分析我们的 C++ 应用程序之一,但在运行二进制文件时遇到了问题。为了缩小问题范围,我尝试分析一个非常简单的 C++ 程序,但我看到了同样的错误。我已经粘贴了使用 Purify 运行时得到的代码和输出:
// purify.cc
#include <iostream>
int main()
{
int *i = new int[10];
return 0;
}
[上午 12 点 15 分]~/testPrograms$ purify -recursion-depth-limit=0 --best-effort --cache-dir=/home/deepakde/testPrograms g++ purify.cc [上午 12 点 17 分]~/testPrograms$ ./a.out 净化:警告:无法打开文件以读取程序头信息 **** Purify Instrumented ./a.out (pid 10897 at Mon Apr 22 00:17:37 2013) * Purify 7.0.0.0-010 080125 Linux (64-bit) (C) 版权所有 IBM Corporation。1992, 2008 版权所有。 * 联系信息类型:“purify -help” * 对于 Purify Viewer 输出,设置 DISPLAY 环境变量。 * 选项设置:-g++=yes -purify -recursion-depth-limit=0 --best-effort \ --cache-dir=/home/deepakde/testPrograms \ -purify-home=/opt/purifyplus/7_fixpack3/releases/purify.i386_linux2.7.0.0.0-010 \ -gcc3_path=/usr/bin/g++ -cache-dir=/home/deepakde/testPrograms 净化:警告:无法打开文件以读取程序头信息 净化:警告:无法打开文件以读取程序头信息 净化:警告:无法打开文件以读取程序头信息 **** 净化仪器 ./a.out (pid 10897) **** MSE:内存段错误: * 这发生在线程 10897 中: *未知功能* [pc=0x2ba62329f4d0] *未知功能* [pc=0x3d2b20d3fa] * 访问跨越内存段边界的内存范围。 寻址 0x2ba6236806a8 的 8 个字节以 0x2ba6236806b0 结尾, 它既不在堆中也不在主堆栈中。 **** 净化仪器 ./a.out (pid 10897) **** MSE:内存段错误: * 这发生在线程 10897 中: *未知功能* [pc=0x2ba62329f4fd] *未知功能* [pc=0x3d2b20d3fa] * 访问跨越内存段边界的内存范围。 寻址 0x2ba6236806c0 的 8 个字节以 0x2ba6236806c8 结尾, 它既不在堆中也不在主堆栈中。
有人可以帮我解决我在运行 Purify 时收到的错误消息吗?该程序甚至无法启动,只是出现此消息的错误。
我在 RedHat Linux 2.6 64 位上使用 Purify 7 Fixpack 3。