0

我正在尝试使用 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。

4

0 回答 0