Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Valgrind는 동적 분석 도구를 구축하기위한 계측 프레임 워크(instrumentation framework)입니다. 
    • Valgrind를 이용해 자동으로 많은 메모리 관리 및 스레딩 버그를 감지하고 프로그램을 자세하게 분석 할 수있습니다.
    • Valgrind를 이용해 새로운 도구를 만들 수도 있습니다.
  • Valgrind는 동적 바이너리 계측을 사용하므로 응용 프로그램을 수정, 재컴파일하거나 다시 연결할 필요가 없습니다. 
    • 명령 줄에 valgrind를 붙이면 모든 것이 작동합니다.
  • Valgrind는 C, C ++, Java, Perl, Python, 어셈블리 코드, Fortran, Ada 및 기타 여러 언어로 작성된 프로그램에서 사용됩니다.
    • Valgrind 도구는 주로 C 및 C ++로 작성된 프로그램을 대상으로 합니다
  • Valgrind 배포판에는 6개의 품질 도구 테스트 도구가 포함되어 있습니다.
    • 메모리 에러 검출기
    • 2개의 스레드 에러 검출기
    • 캐시 및 분기 예측 프로파일러
    • 콜 그래프 생성 캐시
    • 분기 예측 프로파일러
    • 힙 프로파일러
  • Valgrind는 세 가지 실험 도구가 포합되어 있습니다.
    • 스택 및 전역 배열의 Overrun 검출기
    • 힙 블록 사용 방법을 검사하는 second heap profiler
    • SimPoint 기본 블록 벡터 생성기
  • Valgrind는 다음과 같은 플랫폼에서 실행됩니다.
    • X86/Linux, AMD64/Linux, ARM/Linux, ARM64/Linux, PPC32/Linux, PPC64/Linux, PPC64LE/Linux, S390X/Linux, MIPS32/Linux, MIPS64/Linux, X86/Solaris, AMD64/Solaris, ARM/Android (2.3.x and later), ARM64/Android, X86/Android (4.0 and later), MIPS32/Android, X86/Darwin and AMD64/Darwin (Mac OS X 10.12).

Valgrind Tools

Memcheck

  • Memcheck는 C, C++ 프로그램에서 메모리 관리 문제를 탐지합니다.
  • Memcheck는 프로그램이 실행되면 메모리의 모든 읽기와 쓰기가 검사 되고 malloc / new / delete에 대한 호출이 인터셉트됩니다.
  • Memcheck는 다음과 같은 내용을 탐지 할 수 있습니다.
    • 불필요한 메모리 엑세스
      • 할당되지 않은 영역
      • 해제된 영역
      • 스택 블록의 끝 부분
      • 액세스 할 수 없는 영역
    • 초기화 되지 않은 값 사용
    • 메모리 누수
    • Heap 블록의 잘못된 해제
      • Double free
      • mismatched free
  • Memcheck는 오류가 발생하면 즉시 오류를 보고하고 오류가 발생한 영역에 대한 스택 추적 정보를 제공합니다.
  • Memcheck는 바이트 수준에서 주소 지정 가능성을 추적하고 비트 수준에서 값을 초기화합니다. 
  • Memcheck는 프로그램을 정상 속도보다 느린 약 10~30배 속도로 실행합니다Valgrind - Memcheck

SGCheck

  • SGCheck는 스택 및 전역 배열 오버런을 찾기 위한 도구입니다.
  • SGCheck는 스택 및 전역 배열 액세스의 가능한 형태에 대한 관찰에서 파생 된 경험적 접근법을 사용하여 작동합니다.

...