Memcheck을 사용하여 메모리 누수 감지
Valgrind 툴 스위트에 포함된 Memcheck 도구를 사용하면 애플리케이션의 메모리 관리와 관련된 문제를 탐지할 수 있습니다. 이 도구는 GDB 디버거와 함께 사용하십시오. 문제가 탐지되면 애플리케이션이 중단되며, 이를 디버깅할 수 있습니다.
참고: Linux에서는 Memcheck를 로컬에 설치하여 실행할 수있습니다 . 또한 어떤 컴퓨터에서든 원격 호스트나 장치에서 Memcheck를 실행할 수 있습니다. Windows에서는 Heob 힙 관찰기를 사용하여 유사한 결과를 얻을 수 있습니다.
Valgrind 도구를 다운로드하여 설치한 후, Qt Creator 에서 Memcheck를 사용할 수 있습니다.
애플리케이션의 메모리 누수를 감지하려면:
- Projects 모드로 이동하여 디버그 빌드 구성을 선택합니다.
- 모드 선택기에서 ‘ Debug > Memcheck ’를 선택합니다.

을 선택하여 애플리케이션을 시작합니다.- 애플리케이션을 실행하여 분석합니다.
- '
'를 선택하여 ' Memory Issues'에서 분석 결과를 확인합니다.
메모리 문제 확인
애플리케이션이 실행되는 동안 Memcheck는 다음 작업을 수행합니다.
- 메모리의 모든 읽기 및 쓰기 작업을 확인합니다.
- 메모리를 할당하거나 해제하거나, 메모리 블록을 생성하거나 삭제하는 호출을 가로챕니다.
Memcheck을 중지하면 결과를 확인할 수 있습니다. ' Qt Creator '은 문제를 범주별로 분류하고, 실행 중인 애플리케이션과 관련된 문제만 표시합니다. 기본적으로 다른 문제(예: 외부 라이브러리에서 발생한 문제)는 필터링되어 제외됩니다.
특정 행을 선택하면 메모리 누수가 발생한 위치와 그 원인을 보여주는 스택 트레이스를 확인할 수 있습니다.
데이터 수집의 대안으로, ‘
’를 선택하여 XML 형식의 외부 로그 파일을 ‘ Memcheck ’ 보기에 불러올 수 있습니다.
행 위에 마우스를 올리면 해당 함수에 대한 자세한 정보를 볼 수 있습니다.
행 간을 이동하려면 ‘
’(Previous) 또는 ‘
’(Next)를 선택하십시오.
Memcheck 사용에 대한 자세한 내용은 Valgrind 문서의 “Memcheck의 출력 해석(Interpreting Memcheck's Output )”을 참조하십시오.
메모리 문제 필터링
결과를 필터링하려면 ‘
’를 선택한 다음, 뷰에 표시할 문제 유형을 선택하십시오:
- 확실한 메모리 누수 및 의심되는 메모리 누수
- 초기화되지 않은 메모리 사용
- 다음에 대한 잘못된 호출
free() - 크기 및 정렬 오류
- 파일 디스크립터 문제
Other 를 선택하면 어떤 범주에도 속하지 않는 문제를 표시할 수 있습니다.
External errors 를 선택하면 외부 라이브러리의 문제도 함께 표시됩니다.
참조 : 방법: 분석, 함수 실행 프로파일링, 외부 애플리케이션에서 Valgrind 도구 실행, 프로젝트에 대한 Valgrind 설정 지정, 분석기, Valgrind Callgrind, Valgrind Memcheck 및 코드 분석.
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.