22장. valgrind


Valgrind 는 애플리케이션을 자세히 프로파일링하는 데 사용할 수 있는 동적 분석 툴을 구축하기 위한 계측 프레임워크입니다. 기본 설치에서는 이미 5개의 표준 툴을 제공합니다. Valgrind 툴은 일반적으로 메모리 관리 및 스레드 문제를 조사하는 데 사용됩니다. Valgrind 에서는 사용자 공간 바이너리에 대한 계측을 제공하여 초기화되지 않은 메모리 사용, 부적절한 메모리 할당/삭제, 시스템 호출에 대한 부적절한 인수와 같은 오류를 확인합니다. 그 프로파일링 툴은 대부분의 바이너리에서 사용할 수 있지만 다른 프로파일에 비해 Valgrind 프로파일 실행 속도가 훨씬 느려집니다. Valgrind 는 바이너리를 프로파일링하기 위해 특수 가상 머신 내에서 실행하므로 Valgrind 가 모든 바이너리 명령을 인터셉트할 수 있습니다. Valgrind의 툴은 사용자 공간 프로그램에서 메모리 관련 문제를 찾는 데 가장 유용하며 시간별 문제 또는 커널 공간 계측 및 디버깅을 디버깅하는 데는 적합하지 않습니다.

Valgrind 보고서는 조사 중인 프로그램 또는 라이브러리를 위해 debuginfo 패키지를 설치할 때 가장 유용하고 정확합니다. 20.1절. “디버깅 정보를 사용하여 디버깅 활성화”을 참조하십시오.

22.1. Valgrind 툴

Valgrind 제품군은 다음 툴로 구성됩니다.

Memcheck

이 도구는 프로그램에서 메모리 관리 문제를 감지합니다.

  • 메모리에서 모든 읽기 및 쓰기 확인
  • malloc,free,new 또는 delete에 대한 호출과 같은 메모리 조작을 가로채는 것입니다.

Memcheck 는 메모리 관리 문제가 다른 수단을 사용하여 감지하기 어려울 수 있으므로 가장 많이 사용되는 Valgrind 도구일 수 있습니다. 이러한 문제는 종종 장기간 감지되지 않고 결국 진단하기 어려운 충돌을 유발합니다.

특정 도구를 선택하지 않은 경우 Mem check 가 기본 도구로 작동합니다.

cachegrind
cachegrind 는 CPU에서 I1, D1 및 L2 캐시의 자세한 시뮬레이션을 수행하여 코드에서 캐시 누락의 원인을 정확하게 파악하는 캐시 프로파일러입니다. 또한 각 소스 코드에 대한 캐시 누락, 메모리 참조 및 지침의 수를 표시합니다. cachegrind 도 함수별, 모듈당 및 전체 프로그램 요약을 제공하며, 각 개별 머신 명령에 대한 개수를 표시할 수 있습니다.
callgrind
cachegrind 와 마찬가지로callgrind 에서는 캐시 동작을 모델링할 수 있습니다. 그러나 호출grind 의 주요 목적은 실행된 코드에 대한 callgraphs 데이터를 기록하는 것입니다.
large largeif
largestif 는 힙 프로파일러입니다. 이는 프로그램이 사용하는 힙 메모리의 양을 측정하여 힙 블록, 힙 관리 오버헤드 및 스택 크기에 대한 정보를 제공합니다. 힙 프로파일러는 힙 메모리 사용량을 줄이는 방법을 찾는 데 유용합니다. 가상 메모리를 사용하는 시스템에서 최적화된 힙 메모리 사용량이 있는 프로그램은 메모리가 부족해질 가능성이 적으며 페이징이 줄어들 때 더 빠르게 실행될 수 있습니다.
Helgrind

POSIX pthreads 스레드를 사용하는 프로그램에서 helgrind 는 동기화 오류를 탐지합니다. 이러한 오류는 다음과 같습니다.

  • POSIX pthreads API의 오용
  • 잠금 문제 해결으로 발생하는 잠재적인 교착 상태
  • 데이터 경쟁 (즉, 적절한 잠금없이 메모리에 액세스)
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.