본문으로 바로가기

[리눅스] valgrind

category 운영체제/리눅스 2022. 6. 23. 14:15
728x90
반응형

C언어를 사용하여 개발을 하다보면, 제일 말썽을 많이 일으키는게 메모리입니다.

C언어는 메모리를 직접 컨트롤 하기 때문에 이 부분에서 실수를 하게되면, sergment fault가 자주 발생하게됩니다.

코드가 길어지고, 복잡해지면 메모리 부분에 대해 체크하는게 상당히 어렵고, 시간이 많이 소요됩니다.

그렇기 때문에 리눅스에서는 메모리에 대한 문제를 체크할 수 있는 툴이 있습니다.

바로 valgrind입니다

공식 홈페이지는 https://valgrind.org/ 입니다.

valgrind는 오픈 소스이며 무료로 사용할 수 있습니다.

valgrind는 메모리 뿐만 아니라 리눅스 프로그램을 디버깅할 수 있고, 프로그램의 속도 향상에 도움을 줄 수 있습니다.

또한, 리눅스, 맥, 안드로이드 등 에서 사용할 수 있으며, C/C++로 작성된 프로그램에서 사용하기에 유용합니다.

그러나 언어에 크게 구애를 받지는 않습니다.

valgrind는 리눅스를 설치하면 기본적으로 보통 설치되어 있습니다.

Redhat 6.8 기준으로는 아래의 명령어로 설치할 수 있습니다

]# yum install valgrind

Ubuntu 20.04.1 LTS 기준으로는 아래의 명령어로 설치할 수 있습니다

]# sudo apt install valgrind

그럼 예제를 통해서 valgrind 사용법을 알아보겠습니다.

valgrind 기본 사용법은 아래와 같습니다

]# valgrind [실행파일]

단, 여기서 실행파일은 컴파일 할 때, 디버그 옵션을 추가해야됩니다.

valgrind는 디버깅을 이용하여 체크를 하다보니 필수적으로 넣어야 됩니다.

valgrind 명령어에 옵션을 추가하여 사용할 수 있지만, 기본적인 것만 보여드리겠습니다.

 


위의 그림은 malloc, free로 메모리를 정상적으로 처리했을 경우입니다.

따로 문제될 건 없습니다.

 


위의 그림은 malloc만 한 후, free를 하지 않았습니다.

LEAK SUMMARY 부분을 보시면 400바이트에서 LEAK이 발생했다고 나옵니다.

 


위 그림은 --leak-check=full 옵션을 추가하여 다시 실행해보았습니다.

main.c의 6라인에서 malloc이 되었고, 그 부분에 대해 문제가 있다고 구체적으로 나옵니다.

이 옵션만으로도 어느정도는 추적을 할 수 있습니다.

728x90
반응형

'운영체제 > 리눅스' 카테고리의 다른 글

[리눅스] yum으로 rpm 파일 다운로드  (0) 2022.07.20
[리눅스] source 명령어  (0) 2022.07.11
[리눅스] 멀티플렉싱  (0) 2022.05.17
[리눅스] CentOS hostname 변경  (0) 2022.02.10
[리눅스] apt와 apt-get  (0) 2022.01.13