5.3. 프로파일 메모리 사용에 Valgrind 사용

Valgrind는 사용자 공간 바이너리에 대한 계측을 제공하는 프레임워크입니다. 이는 프로그램 성능을 프로파일링하고 분석하는데 사용할 수 있는 여러 도구와 함께 제공됩니다. 다음 부분에서 소개되는 도구는 메모리 사용 및 잘못된 메모리 할당 및 메모리 할당 해제와 같은 메모리 오류를 감지하는데 도움이 될 수 있는 분석을 제공합니다. 이러한 모든 것은 valgrind에 포함되어 다음과 같은 명령을 사용하여 실행할 수 있습니다:
valgrind --tool=toolname program
toolname을 사용하고자 하는 도구 이름 (메모리 프로파일링의 경우 memcheck, massif, cachegrind)으로 변경하고 program을 Valgrind으로 프로파일링하고자 하는 프로그램으로 변경합니다. Valgrind의 계측을 사용하면 프로그램이 평소보다 더 느리게 실행되는 원인이 될 수 있음에 유의합니다.
Valgrind 기능에 대한 개요는 3.5.3절. “Valgrind”에 설명되어 있습니다. Eclipse 용으로 사용 가능한 플러그인에 대한 정보를 포함한 자세한 내용은 http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/에 있는 개발자 가이드에서 확인하실 수 있습니다. 부수적인 문서는 valgrind 패키지 설치 시 man valgrind 명령으로 확인하거나 다음의 위치에서 확인하실 수 있습니다:
  • /usr/share/doc/valgrind-version/valgrind_manual.pdf,
  • /usr/share/doc/valgrind-version/html/index.html.

5.3.1. Memcheck로 메모리 사용량 프로파일링

Memcheck는 기본 Valgrind 도구로 --tool=memcheck를 지정하지 않고 valgrind program으로 실행될 수 있습니다. 발생해서는 안되는 메모리 액세스, 정의되지 않거나 초기화되지 않은 값의 사용, 올바르지 않게 해제된 힙 메모리, 중복 포인터, 메모리 누수와 같은 감지 및 진단이 어려운 여러 메모리 오류를 감지하고 보고합니다. Memcheck를 사용하면 프로그램은 일반적으로 실행되는 것 보다 10-30 배 느리게 실행됩니다.
Memcheck는 감지된 문제의 종류에 따라 특정 오류를 반환합니다. 이러한 오류는 /usr/share/doc/valgrind-version/valgrind_manual.pdf에 포함된 Valgrind 문서에 자세히 설명되어 있습니다.
Memcheck는 이러한 오류를 보고만 할 수 있을 뿐 — 오류 발생을 방지할 수 없음에 유의합니다. 일반적으로 세그먼트 오류를 발생시킬 수 있는 방식으로 프로그램이 메모리에 액세스하는 경우 세스먼트 오류는 여전히 발생합니다. 하지만 Memcheck는 오류 직전에 오류 메세지를 기록합니다.
Memcheck는 검사 과정에 초점을 두는데 사용할 수 있는 명령행 옵션을 제공합니다. 이러한 옵션에는 다음과 같은 것이 있습니다:
--leak-check
활성화할 경우 Memcheck는 클라이언트 프로그램이 완료되면 메모리 누수를 검색합니다. 기본값은 summary로 발견된 누수 수를 출력합니다. 사용 가능한 다른 값은 yesfull로 모두 개별적 누수 세부 정보를 제공하며 no는 메모리 누수 검사를 비활성화합니다.
--undef-value-errors
활성화할 경우 (yes로 설정할 경우) Memcheck는 정의되지 않은 값이 사용되고 있을 때 오류를 보고합니다. 비활성화할 경우 (no로 설정할 경우) 정의되지 않은 값 오류는 보고되지 않습니다. 이는 기본값으로 활성화되어 있습니다. 이를 비활성화하면 Memcheck 속도가 약간 빨라집니다.
--ignore-ranges
적용 가능성을 검사할 때 사용자는 Memcheck가 무시해야 하는 하나 이상의 범위를 지정할 수 있습니다. 여러 범위는 다음과 같이 콤마로 구분합니다. 예: --ignore-ranges=0xPP-0xQQ,0xRR-0xSS
옵션의 전체 목록은 /usr/share/doc/valgrind-version/valgrind_manual.pdf에 있는 문서에서 참조하십시오.

Red Hat의 최신 제품 문서 번역을 신속하게 제공하기 위해 이 페이지에는 영어 원본을 한국어로 자동 번역한 내용이 포함되어 있을 수 있습니다. [자세한 내용보기]