이 페이지에서

Valgrind 멤체크

모든 프로젝트에 대해 전역으로 설정하거나 프로젝트의 실행 설정 에서 각 프로젝트에 대해 개별적으로 설정합니다.

Valgrind에 대한 전역 환경설정을 설정하려면 환경설정 > Analyzer 을 선택합니다. 에서 멤체크 환경설정을 설정합니다 Memcheck Memory Analysis Options.

분석기 환경 설정의 Valgrind 탭에서 메모리 분석 옵션 확인

Extra Memcheck arguments 에서 실행 파일 실행을 위한 추가 인수를 지정합니다.

스택 추적 길이 설정

스택 추적은 상당히 커서 혼란스러울 수 있으므로 아래에서 위로 읽는 것이 도움이 될 수 있습니다. 스택 추적이 충분히 크지 않거나 너무 큰 경우 환경설정 > Analyzer 을 선택하고 Backtrace frame count 필드에서 스택 추적의 길이를 정의하세요.

초기화되지 않은 메모리의 출처 추적하기

멤체크는 또한 초기화되지 않은 값의 사용을 보고하며, 가장 일반적으로 Conditional jump or move depends on uninitialised value(s). 메시지와 함께 이러한 오류의 근본 원인을 파악하기 위해 초기화되지 않은 메모리의 출처를 추적합니다. 멤체크의 실행 속도를 높이려면 Track origins of uninitialized memory 을 선택 취소하세요.

요약 보기

멤체크는 클라이언트 애플리케이션이 완료될 때 메모리 누수를 검색합니다. 발생한 누수량을 보려면 Check for leaks on finish 필드에서 Summary Only 을 선택하세요. 또한 각 누수에 대한 세부 정보를 보려면 Full 을 선택하세요.

도달 가능한 블록과 간접적으로 손실된 블록 표시하기

도달 가능한 블록은 포인터 또는 포인터 체인으로 가리키고 있으며 애플리케이션이 종료되기 전에 해제되었을 수 있는 블록입니다. 간접적으로 손실된 블록은 해당 블록을 가리키는 모든 블록 자체가 손실되었기 때문에 손실된 것으로 간주됩니다. 예를 들어, 손실된 루트 노드의 모든 자식 노드는 간접적으로 손실됩니다.

기본적으로 멤체크는 도달 가능한 블록과 간접적으로 손실된 블록은 보고하지 않습니다. 이러한 블록을 보고하려면 Show reachable and indirectly lost blocks 을 선택하세요.

오류 억제

멤체크는 OS에 사전 설치되어 있는 C 라이브러리와 같은 시스템 라이브러리에서 수많은 문제를 감지합니다. 이러한 문제는 쉽게 수정할 수 없으므로 이를 억제하고자 합니다. Valgrind는 시작 시 억제할 오류 목록을 읽습니다. 기본 억제 파일은 시스템이 빌드될 때 ./configure 스크립트에 의해 생성됩니다.

프로젝트의 일부에 수정할 수 없는 오류가 있고 알림을 받고 싶지 않은 경우 직접 억제 파일을 작성할 수 있습니다. MemCheck Memory Analysis 대화 상자에서 Add 을 선택하여 억제 파일을 추가합니다.

억제 파일 작성에 대한 자세한 내용은 Valgrind 문서에서 오류 억제하기를 참조하세요.

Memcheck로 메모리 누수 감지, 프로파일 함수 실행, 외부 애플리케이션에서 Valgrind 도구 실행, 프로젝트에 대한 Valgrind 설정 지정Valgrind Callgrind도참조하세요 .

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.