달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

valgrind( '밸그린드' 라고 읽는다. )는 linux에서 memory leack을 비롯해서 각종 memory 관련 Error를 check해주는 Open Source Tool로 무료이다.

 

valgrind는 run-time상에 발생하는 memory관련 버그를 잡아주는 dynamic tool이다. 

static tool로는 Clang이 있다. static tool은 코드를 실행하지 않고 코드를 검사하여 버그를 잡아준다.

나 같은 경우 Clang으로 먼저 분석하여 코드상 품질을 확보 후 valgind를 run-time으로 실행하여 static tool인 Clang으로 검출되지 않는 memory관련 버그를 검출한다.

 

  • valgrind로 에러를 검출할 수 없는 경우는 다음 몇가지가 있다.

1. if~else, return 등 코드가 동작하지 않아 검사할 수 없는 부분, valgrind는 run-time시 동작하는 코드만 검사해준다. if~else문 등의 조건에 걸려 동작하지 않은 코드상에 있는 memory 버그는 검사하지 못한다.

2. valgrind는 부모 프로세스만 추적가능하다. 자식 프로세스는 추적할 수 없다. 자식을 추적하려면 '--trace-children=yes' 옵션을 사용해야 한다.

3. static or stack arrays 경계 침범을 검사하지는 못한다.

 

  • valgrind 실행하는 방법
valgrind --leak-check=full -v --trace-children=yes --log-file='저장할 로그 path' 'test할 실행파일의 위치'

'test할 실행파일'을 valgrind로 실행시키는데 옵션으로 leak check는 full로하고 -v을 주고 child 프로세스를 체크하면서 로그파일을 남긴다는 뜻이다.

시스템에 따라 한번 실행 시키는데 몇 십분씩 걸리는 경우도 있다. 끈기있게 기다려야 한다.

 

  • valgrind에서 저장한 로그파일 분석

버전과 옵션에 따라 저장내용이 조금씩 달라질 수도 있다.

 

 

  • valgrind 옵션

valgrind --help를 치면 option의 종류에 대해 알 수 있다.

Basic Option 설명

 

Error Report에 대한 Option

 

Replace malloc에 대한 Option

 

uncommon user Option

 

Memcheck User Option

 

 

'karma( 업 ) > linux' 카테고리의 다른 글

고급 Bash 스크립트 가이드( Link 글 )  (0) 2019.05.12
too many file open해결을 위한 명령어  (0) 2019.04.14
strace의 마술  (0) 2017.06.22
한영 변환 단축키 설정  (0) 2017.05.29
Shell Script 참고  (0) 2017.05.26
Posted by 생짜
|