Rational Purify не показывает утечку памяти и ошибки времени выполнения?

StackOverflow https://stackoverflow.com/questions/2298924

Вопрос

Возможно, это не похоже на вопрос программирования, но по своей сути он касается кода.

У меня есть следующий фрагмент тестового кода, в котором есть очевидные ошибки, такие как выход индекса массива за пределы, утечка памяти: -

#include "stdio.h"
#include "stdlib.h"
main()
{
   int i;
   char *ptr;
   ptr = (char*)malloc(5);
   for(i=0;i<10;i++)
   {
      ptr[i]=(char)i;
   }

}

Этот код создан на базе MS-Visual Studio 2008.

Я пытаюсь использовать Rational Purify (версия 7.0) для выявления ошибок во время выполнения и утечек памяти в моем коде.Прочитав несколько указаний о том, как создать код для использования в Purify, я сделал следующие действия в настройках проекта MSVS-2008:

1.) Отключить инкрементную ссылку. 2.) Флаг компилятора отладочной информации — /Zi.

3.) Установите для параметра компоновщика значение «Базовая проверка во время выполнения» по умолчанию.

4.) Добавлена ​​дополнительная опция компоновщика /исправлено:нет.

5.) Конфигурация сборки отладочная, оптимизация не включена.

Затем я собираю и получаю exe.Я использую этот exe-файл для запуска в Purify, чтобы он работал одинаково.Но окно вывода в Purify после запуска/инструментирования этого exe-файла не показывает ошибок, связанных с утечкой памяти и т. д., которые присутствуют в приведенном выше коде.

В окне вывода Purify показаны выходные данные различных двоичных файлов (мой exe-файл и некоторые другие системные библиотеки), которые он загрузил и выполнил.Но в выводе, где показаны данные о моем exe, сообщения об ошибке нет.

У меня такое ощущение, что я совершаю ошибку, указывая параметры компиляции/компоновки при сборке exe-файла в MS-VS 2008. Или сгенерированный формат исполняемого файла несовместим/непонятен для Purify?

1.) Что здесь может быть не так?Какие еще опции мне могут понадобиться при создании exe?

2.) Правильно ли я использую Purify или я что-то упускаю?Как я могу заставить Purify отображать все ошибки в моей программе после анализа времени выполнения?

3.) Есть ли какой-либо другой инструмент (бесплатная/коммерческая лицензия), который может обнаруживать утечки памяти, ошибки выхода массива, использование неинициализированных указателей, переменных, повреждение памяти и т. д.путем выполнения анализа кода C во время выполнения.

Извините за длинное письмо, но нужно было внести ясность.

Спасибо.

-ОБЪЯВЛЕНИЕ

Это было полезно?

Решение

Яростно перепробовав множество вещей, читая в Интернете, я обнаружил соль.для этого

1) Добавьте новую переменную среды как:

Имя = IBM_RATIONAL_PURIFY_ENABLE_SELECTIVE

Вале = 1

2) Помимо настроек проекта MS Visual Studio, которые я упомянул в ОП, необходимы следующие настройки:

C/C++ -> Генерация кода = Библиотека времени выполнения -> Многопоточная отладка /MTd

И когда вы запускаете исполняемый файл в Purify, вам нужно нажать «Настроить выборочную» и выбрать свой exe.

Затем, когда вы запустите, он должен собрать необходимую информацию, связанную с ошибками.

-ОБЪЯВЛЕНИЕ

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top