메모리 디버거
Memory debugger이 글은 검증을 위해 인용구가 추가로 필요하다. – · · 책 · · (2011년 12월) (이 를 |
프로그램 실행 |
---|
일반개념 |
코드 종류 |
컴파일 전략 |
주목할 만한 런타임 |
주목할 만한 컴파일러 및 공구 체인 |
|
메모리 디버거는 메모리 누수, 버퍼 오버플로와 같은 소프트웨어 메모리 문제를 찾기 위한 디버거다.이는 동적 메모리의 할당 및 할당 해제와 관련된 버그 때문이다.관리되는 코드와 같이 가비지 수집이 있는 언어로 작성된 프로그램에는 수집에서 "살아있는" 참조로 인한 메모리 누출을 위한 메모리 디버거도 필요할 수 있다.
개요
메모리 디버거는 메모리 액세스, 할당 및 메모리 할당 해제를 모니터링하여 작동한다.많은 메모리 디버거는 API가 대부분 기존의 동적 메모리 할당 라이브러리와 호환되는 특수 동적 메모리 할당 라이브러리와 함께 애플리케이션을 다시 컴파일하도록 요구하거나, 그렇지 않으면 동적 연결을 사용한다.전기 울타리는 말록으로 메모리 할당을 방해하는 디버거다.일부 메모리 디버거(예: Valgrind)는 가상 시스템 같은 환경에서 실행 파일을 실행하고 메모리 액세스, 할당 및 할당 해제를 모니터링하여 특수한 메모리 할당 라이브러리를 재컴파일할 필요가 없도록 하여 작동한다.
누출과 같은 기억력 문제를 발견하는 것은 특정한 조건하에서가 아니면 그들 자신을 드러내지 않을 수 있기 때문에 극도로 많은 시간이 소요될 수 있다.메모리 오용을 감지하는 도구를 사용하면 훨씬 빠르고 쉽게 프로세스를 진행할 수 있다.[1]
메모리 디버거는 비정상적으로 높은 메모리 활용도가 소프트웨어 노후화에 기여하는 요인이 될 수 있기 때문에 프로그래머가 컴퓨터 시스템 메모리를 소진시키는 소프트웨어 이상을 피하도록 도와 장시간 사용해도 소프트웨어의 높은 신뢰성을 보장할 수 있다.
정적 분석기와 비교
일부 정적 분석 도구는 메모리 오류를 찾는 데도 도움이 될 수 있다.메모리 디버거는 실행되지 않고 코드를 분석하여 정적 코드 분석을 수행하는 동안 애플리케이션의 일부로 작동한다.이러한 서로 다른 기법들은 전형적으로 다른 문제들의 예를 발견할 것이며, 그것들을 함께 사용하면 최상의 결과를 얻을 수 있다.[2]
메모리 디버깅 도구 목록
메모리 디버깅에 유용한 툴 목록이다.프로파일러는 메모리 디버거와 함께 사용할 수 있다.
이름 | OS | 면허증 | 언어들 | 테크닉 |
---|---|---|---|---|
AddressSanitizer | Linux, Mac OS | 자유/개방형 소스(LLVM) | C, C++. | 컴파일 시간 계측(Clang 및 GCC에서 사용 가능) 및 전문 라이브러리 |
알리네아 DDT | 리눅스, 블루진 | 독점상업 | C, C++, F90.또한 슈퍼컴퓨터의 병렬 프로그램용 | 런타임 - 동적 연결을 통해 |
AQ타임 | Windows(Visual Studio, Embarcadero IDE) | 독점상업 | .NET, C++, Java, Silverlight, JScript, VBScript[3] | 런타임 |
브체크 | 솔라리스 | |||
바운스체커 | Windows(Visual Studio) | 독점상업 | C++ | 런타임 가로채기 또는 컴파일 시간 |
다이콘 | Unix, Windows, Mac OS X[4] | 자유/오픈 소스[5] | 자바, C/C++, 펄, 에펠[4] | 런타임 동적 불변 탐지 |
디버그_new | (일반 기술) | (일반 기술) | C++ | 컴파일 시간 재정의 |
들레커 | Windows(Visual Studio, RAD Studio, Qt Creator, CLion용 독립 실행형 및 플러그인) | 독점상업 | C++, .Net, Delphi | 런타임 인터셉트 |
dmalloc | 아무거나 | 자유/오픈 소스 | C | 컴파일 시간 재정의 |
다이너모리오 § 닥터메모리 | Android, Linux, Windows | 자유/개방 소스(LGPL 및 BSD) | 아무거나 | 런타임 인터셉트 |
전기 울타리 | 유닉스 | GNU GPL | C, C++. | 컴파일 시간 재정의 |
FASTM4 | 창문들 | GNU GPL | 델파이 | 컴파일 시간 재정의 |
IBM Rational Pured | Unix, Windows | 독점상업 | C++, Java, .네트 | 런타임 |
인슈어++ | Windows(Visual Studio 플러그인), Unix | 독점상업 | C, C++. | 소스 코드 계측 |
인텔 인스펙터 | Windows(Visual Studio), Linux | 독점상업 | C, C++, 포트란 | 런타임 |
libcwd | Linux(gcc) | 자유/오픈 소스 | C, C++. | 컴파일 시간 재정의 |
libumem | 솔라리스 | Solaris와 함께 번들됨 | 링크 시간 재정의 | |
멤워치 | 임의(프로그래밍 라이브러리) | 자유/오픈 소스 | C | 컴파일 시간 재정의 |
미트레이스 | 다양한 | GNU LGPL | GNU C 라이브러리 | 기본 제공, 출력 액세스 |
엠튜너 | 다양한 | 무료 | C, C++. | 런타임 인터셉트, 링크 시간 재정의(MSVC, 클랑 및 GCC), 누출 감지 |
Oracle Solaris Studio(이전의 Sun Studio Runtime Checking) | Linux, Solaris | 독점 프리웨어 | C, C++, 포트란 | |
OLIVER(APT 국제) | MVS, MVS/EXA, DOS/VSE | 독점 소프트웨어 | IBM Assembler | 런타임 인터셉트, 하이퍼바이저 - 유형 2 |
토탈뷰 | Unix, Mac OS X | 독점상업 | C, C++, 포트란 | 런타임 |
Valgrind § 멤체크 | Linux, Mac OS, Android | GNU GPL | 아무거나 | 런타임 인터셉트 |
윈Dbg | 창문들 | 독점 프리웨어 | C, C++.Net, Python | 런타임 |
참고 항목
참조
- 마이클 C.다콘타: , , 존 와일리 & 선즈, ISBN0-471-04998-0
- 앤드루 쾨니그: , 애디슨 웨슬리, ISBN 0-201-17928-8
- ^ "Review: 5 memory debuggers for Linux coding". 20 November 2015. Retrieved August 24, 2017.
- ^ "Dynamic Analysis vs. Static Analysis". Retrieved August 24, 2017.
- ^ "Archived copy". Archived from the original on 2013-09-19. Retrieved 2013-01-14.
{{cite web}}
: CS1 maint: 타이틀로 보관된 사본(링크) - ^ a b "The Daikon Invariant Detector User Manual".
- ^ "The Daikon Invariant Detector User Manual".
외부 링크
- 이반 스카이트 요르겐센의 "추적 기억 벌레 찾기"
- 장필리프 마틴의[full citation needed] "프리 메모리 체크리스트 비교"