이것은 프로그래밍 질문처럼 보이지 않지만 코드를 본질적으로 다룰 수 있습니다.Rational Purify가 메모리 누수, 런타임 오류를 표시하지 않습니까?
I가, 메모리 누수 경계의 밖으로 배열 인덱스와 같은 명백한 오류가 테스트 코드의 다음 조각 : -
이 코드는 MS-비주얼 스튜디오에 내장되어#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;
}
}
2008 년
Rational Purify (버전 7.0)를 사용하여 런타임 오류, 코드에서의 메모리 누수를 확인하려고합니다. 다음은 MSVS-2008 프로젝트 설정에서 다음과 같은 작업을 수행했습니다 : -
1.) 디버그 정보 컴파일러 플래그는/Zi
입니다.3) 링커 옵션 설정 - "기본 런타임 값 기본에 확인을
4.
)이 추가 된 추가 링커 옵션/고정 :. 어떤5) 빌드 설정 디버그입니다. 최적화가 활성화되지 않았습니다.
다음으로 buil d와 exe를 얻을. 이 exe를 사용하여 Purify에서 실행하여 동일한 악기를 연주합니다. 그러나이 exe를 실행/계측 한 후 정화의 출력 창은 위의 코드에있는 메모리 누수에 대한 오류를 표시하지 않습니다.
정화 출력 창은로드 된 실행 된 다른 바이너리 (내 exe 파일 및 다른 시스템 dll)의 출력을 보여줍니다. 그러나 출력에서 내 EXE에 대한 데이터를 보여줍니다. 오류 메시지는 없습니다.
내 감정은 MS-VS 2008.or에서 exe를 빌드하는 동안 컴파일/링커 옵션을 제공하는 데 실수를하고 있습니다. 생성 된 실행 형식은 Purify에서 호환/이해할 수 없습니까?
1) 여기서 무엇이 잘못 될 수 있습니까? exe를 빌드하는 동안 더 많은 옵션이 필요합니까?
2.) Purify를 사용하는 과정이 올바르지 않습니까? 아니면 뭔가 빠졌습니까? Purify가 런타임 분석을 한 후 내 프로그램의 모든 오류를 표시하려면 어떻게해야합니까?
3) 3. 메모리 누수, 배열 밖의 배열, 초기화되지 않은 포인터, 변수, 메모리 손상 등을 사용할 수있는 다른 도구 (무료/상용 라이센스)가 있습니까? C 코드의 런타임 분석을 수행하여 .
길게 메일을 보내서 죄송하지만 분명해야합니다.
감사합니다.
-AD
격렬하게 많은 일을 시도 후