Purify Plus

PurifyPlus
UNICOM 정화
원저작자순수 소프트웨어
개발자UNICOM 글로벌 부문인 UNICOM 시스템즈
안정된 릴리스
8.1 / 2021년8월 1일
운영 체제Windows, Linux, Solaris
유형메모리 디버거
면허증.독자적인 소프트웨어
웹 사이트teamblue.unicomsi.com/products/purifyplus/

PurifyPlus는 프로그램, 특히 C 또는 C++로 작성된 프로그램의 메모리 액세스 오류를 감지하기 위해 소프트웨어 개발자가 사용하는 메모리 디버거 프로그램입니다.그것은 원래 Pure [1]SoftwareReed Hastings에 의해 쓰여졌다.이후 Pure Software는 Atria Software와 합병하여 Pure Atria Software를 형성했습니다.이 소프트웨어는 나중에 Rational Software에 인수되어 IBM에 의해 인수되었으며, 2014년 12월 31일 UNICOM Systems, Inc.에 매각되었습니다.Insure++, ValgrindBoundsChecker같은 다른 메모리 디버거와 기능적으로 유사합니다.

개요

PurifyPlus는 프로그램이 디버거와 같이 프로그램을 실행할 때 발생하는 오류를 검색하는 프로세스인 동적 검증을 허용합니다.반면 정적 검증 또는 정적 코드 분석에서는 논리적 불일치를 발견하는 것만으로 소스 코드의 오류를 컴파일하거나 실행하지 않고 검출할 수 있습니다.C 컴파일러에 의한 타입 체크는 스태틱 검증의 예입니다.

프로그램이 Purify와 연결된 경우또한 라이브러리 등의 오브젝트 코드를 해석 및 추가함으로써 수정된 검증 코드를 실행 파일에 자동으로 삽입할 수 있습니다.이렇게 하면, 메모리 에러가 발생했을 경우, 에러의 정확한 장소, 관련된 메모리 주소, 및 그 외의 관련 정보가 출력됩니다.정화하다, 메모리 누전도 검출합니다.기본적으로는 프로그램 종료 시 누출 보고서가 생성되지만 Purify를 호출하여 생성할 수도 있습니다.또한 계측된 애플리케이션 내에서 누출 감지 API를 사용할 수 있습니다.

정화되는 오류또한 어레이 경계 읽기 및 쓰기, 할당되지 않은 메모리 액세스 시도, 할당되지 않은 메모리 해방(보통 같은 메모리를 두 번째로 개방하기 때문에) 및 메모리 누수(포인터 참조가 없는 할당 메모리)가 검출됩니다.이러한 에러의 대부분은 치명적이지 않습니다(적어도 에러 사이트는 아닙니다).또한 프로그램을 실행할 때 잘못된 프로그램 동작으로 인해 문제가 발생하고 있는 을 확인하는 것 이외에는 에러를 검출할 방법이 없는 경우가 많습니다.따라서 정화게다가 이러한 에러를 검출해, 프로그래머에게 에러가 발생하는 장소를 정확하게 알려 줍니다.왜냐하면 Purify게다가 모든 오브젝트 코드를 계측하는 것으로 동작해, 서드 파티제 또는 operating system 라이브러리에서 발생하는 에러를 검출합니다.이러한 오류는 종종 프로그래머가 라이브러리 호출에 잘못된 인수를 전달하거나 라이브러리에 의해 사용되는 데이터 구조를 개방하기 위한 프로토콜에 대한 오해로 인해 발생합니다.이러한 오류는 대부분의 경우 가장 찾아 수정하기 어려운 오류입니다.

기존 디버거와의 차이점

치명적이지 않은 오류를 감지하는 기능은 Purfy의 주요 차이점입니다.일반 디버거에서 제공하는 프로그램 및 유사한 프로그램.이와는 대조적으로 디버거는 보통 프로그래머가 치명적인 에러의 원인을 빠르게 찾을 수 있도록 합니다.예를 들어 null 포인터의 참조에 의한 프로그램 크래시 등입니다만, 치명적이지 않은 메모리 에러의 검출에는 도움이 되지 않습니다.디버거는 정화하는 다른 것들에 유용합니다.Plus는 코드 행을 한 줄씩 밟거나 특정 실행 시점에 프로그램의 메모리를 손으로 검사하는 등의 용도로는 사용되지 않습니다.즉, 이러한 툴은 숙련된 개발자를 위해 서로 보완할 수 있습니다.

PurifyPlus에는 코드에서 디버거를 사용하는 동안 일반적으로 사용되는 고성능 워치포인트와 같은 다른 기능도 포함되어 있습니다.

Purify를 사용하는 것은 주목할 필요가 있습니다.또한 프로그래머에게 메모리 관리를 맡기는 프로그래밍 언어에서는 가장 적합합니다.따라서 Java, Lisp 또는 Visual Basic에서는 를 들어 자동 메모리 관리를 통해 메모리 누전 발생을 줄일 수 있습니다.그러나 이러한 언어에는 여전히 누설이 있을 수 있습니다.개체에 대한 불필요한 참조는 메모리를 재할당하지 않습니다.IBM은 이러한 종류의 오류를 발견하기 위해 Rational Application Developer라는 제품을 보유하고 있습니다.

지원되는 플랫폼

지원되는 C/C++ 플랫폼
운영 체제 프로세서 아키텍처 운영 체제 버전 컴파일러
솔라리스
Sun UltraSPARC Solaris 11 베이스~11.4
Solaris 10 베이스 ~ U11
Sun C/C++ 5.8 ~ 5.15
GNU gcc/g++ 4 및 5
AMD64
인텔 64
Solaris 11 베이스~11.4
Solaris 10 U6 ~ U11
Sun C/C++ 5.8 ~ 5.15
GNU gcc/g++ 4 ~8
리눅스
인텔 IA-32 RHEL 8 (서버/데스크탑)베이스부터 8.3까지
RHEL 7(서버/데스크탑) 베이스~7.9
RHEL 6(서버/데스크탑) 베이스~6.10
SLES 12 베이스~SP4
SLES 11 베이스 ~SP3
GNU gcc/g++ 4 ~8
인텔 icc 11.0 ~11.1
AMD64
인텔 64
RHEL 8 (서버/데스크탑)베이스부터 8.3까지
RHEL 7(서버/데스크탑) 베이스~7.9
RHEL 6(서버/데스크탑) 베이스~6.10
SLES 12 베이스~SP4
SLES 11 베이스 ~SP3
GNU gcc/g++ 4 ~8
인텔 icc 11.0 ~11.1
창문들
인텔 IA-32
인텔 64
AMD 64
Microsoft Windows 10 베이스~21H1
Microsoft Windows 8 베이스 ~ 8.1
Microsoft Windows Server 2019 Standard, 데이터센터
Microsoft Windows Server 2016 Standard, 데이터센터
Microsoft Windows Server 2012 Foundation, Essential, Standard, 데이터센터
Microsoft Windows Server 2008 Enterprise, Standard, 데이터센터, SP2 기반
Microsoft Windows Server 2008 R2 Foundation, Enterprise, Standard, 데이터센터, SP1 기반
Visual Studio 2010 ~ 2019
지원되는 Java/NET 플랫폼
플랫폼 데이터 수집 유형 런타임 환경
창문들
C/C++(미관리 코드) 데이터 수집 Microsoft Visual Studio 2010 ~ 2019
Java 코드 커버리지 데이터 수집 IBM JRE 5~8
SUN JRE 1.5 ~1.8
.NET(관리 코드) 데이터 수집 .NET Framework 3.0 ~ 4.5는 Microsoft Visual Studio 2010에서 2019년까지 사용

「 」를 참조해 주세요.

레퍼런스

  1. ^ Purify: 메모리 누출액세스 오류의 신속한 검출.리드 헤이스팅스와 밥 조이스의 1992년 USenix Winter 기술 회의.

외부 링크