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, выбрать свой исполняемый файл.
Затем, когда вы запустите, он должен собрать необходимую информацию об ошибках.
-ОБЪЯВЛЕНИЕ