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

Это может не выглядеть как вопрос программирования, но по сути имеет дело с кодом.

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

#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, чтобы он использовал те же инструменты. Но окно вывода в cleany после запуска / установки этого exe-файла не показывает ошибок об утечке памяти, и т.д., которые присутствуют в приведенном выше коде.

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

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

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

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

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

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

Благодарю.

-ОБЪЯВЛЕНИЕ

1 ответ

Решение

После яростных попыток, прочитав в интернете, я узнал, что такое Soln. за это

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

Имя = IBM_RATIONAL_PURIFY_ENABLE_SELECTIVE

Vale = 1

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

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

И когда вы запускаете исполняемый файл в Cleany, вы должны нажать на Configure Selective, выбрать свой исполняемый файл.

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

-ОБЪЯВЛЕНИЕ

Другие вопросы по тегам