이 페이지에서

함수 실행 프로파일링

Valgrind 툴 스위트에 포함된 Callgrind 도구를 사용하면 함수 실행과 관련된 문제를 감지할 수 있습니다. Callgrind에서 생성된 데이터 파일을 KCachegrind 프로파일 데이터 시각화 도구에 불러와 성능 결과를 확인할 수 있습니다.

Valgrind 도구와 KCachegrind를 다운로드하여 설치한 후, Qt Creator 에서 Callgrind와 KCachegrind를 사용할 수 있습니다.

참고: Linux 환경에서 Callgrind와 KCachegrind를 로컬에 설치하여 실행할 수있습니다 . 또한 어떤 컴퓨터에서든 원격 Linux 머신이나 장치에서 Callgrind를 실행할 수 있습니다.

프로파일링용 앱 빌드

Callgrind는 애플리케이션 실행 시 호출되는 함수의 호출 이력을 기록합니다. 이 도구는 실행된 명령어 수, 소스 코드 줄과의 관계, 함수 간 호출자 및 피호출자의 관계, 그리고 이러한 호출 횟수를 수집합니다. 또한 캐시 시뮬레이션이나 분기 예측을 사용하여 애플리케이션의 런타임 동작에 대한 정보를 수집할 수도 있습니다.

디버그 빌드와 릴리스 빌드 구성의 런타임 특성은 크게 다르기 때문에, 한 빌드 구성에 대한 분석 결과가 다른 구성에는 적용되지 않을 수 있습니다. 디버그 빌드를 프로파일링하면 컨테이너 구현과 같은 저수준 코드에서 대부분의 시간이 소요되는 것으로 나타나는 경우가 많지만, 동일한 애플리케이션의 릴리스 빌드 프로파일에서는 인라인화 및 일반적으로 수행되는 기타 최적화 때문에 해당 코드가 나타나지 않습니다.

최근의 많은 컴파일러에서는 디버그 정보를 포함하면서 동시에 최적화된 애플리케이션을 빌드할 수 있습니다. 예를 들어, GCC의 일반적인 옵션은 다음과 같습니다: -g -O2. Callgrind 프로파일링에는 이러한 설정을 사용하는 것이 좋습니다.

데이터 수집

애플리케이션을 분석하려면:

  1. Projects 모드로 이동하여 릴리스 빌드 구성을 선택합니다.
  2. 모드 선택기에서 ‘ Debug ’ > ‘ Callgrind ’를 선택합니다.

    Callgrind 보기 도구 모음

  3. 시작 를 선택하여 애플리케이션을 시작합니다.
  4. 애플리케이션을 사용하여 분석합니다.
  5. ' 중지 '를 선택하여 ' Functions ' 뷰에서 분석 결과를 확인합니다.

프로파일링 중 이벤트 로깅을 일시 중지하여 프로그램 실행 속도를 높이려면 일시 정지 를 선택하십시오. 로깅이 일시 중지된 동안에는 이벤트가 집계되지 않습니다.

'다시 불러오기' 버튼 (Reset)를 선택하여 모든 이벤트 카운터를 재설정합니다.

지우기 를 선택하여 수집된 모든 데이터를 삭제합니다.

KCachegrind 를 선택하여 KCachegrind에서 데이터를 확인하십시오. Qt Creator 는 KCachegrind를 실행하고 데이터를 불러와 시각화합니다.

수집된 데이터 보기

분석 결과는 ‘ Callgrind ’ 뷰에 표시됩니다. 뷰를 분리하여 이동할 수 있습니다. 변경 사항을 원상복구하려면 ‘ Views ’ > ‘ Reset to Default Layout ’를 선택하십시오.

Views 를 선택하여 뷰와 뷰 제목을 표시하거나 숨길 수 있습니다. Visualization 뷰는 기본적으로 숨겨져 있습니다. 다시 실행 를 선택하면 표시된 뷰의 데이터를 새로 고칠 수 있습니다.

데이터 수집 대신 ‘ 열기 ’를 선택하여 외부 로그 파일을 ‘ Callgrind ’ 뷰에 불러올 수 있습니다.

Callgrind 보기

결과를 필터링하려면 ‘ Filter ’ 필드에 문자열을 입력하십시오.

Functions 뷰에서 함수 위로 커서를 이동하면 해당 함수에 대한 자세한 정보를 확인할 수 있습니다.

함수를 두 번 클릭하면 ‘ Callers ’ 뷰에서 호출하는 함수에 대한 정보와 ‘ Callees ’ 뷰에서 호출되는 함수에 대한 정보를 볼 수 있습니다.

‘이전’ 버튼 (Previous) 및 ‘다음’ 버튼 (Next)를 선택하여 Callee 뷰에서 함수 간을 이동할 수 있습니다.

비용 형식을 설정하려면 ‘ $ ’을 선택하십시오. 절대 비용이나 상대 비용은 물론, 상위 항목에 대한 상대 비용도 볼 수 있습니다. 해당 프로젝트에서 발생한 프로파일링 정보만 보려면 ‘ 필터 ’을 선택하십시오.

재귀적이거나 순환적인 함수 호출을 올바르게 처리하려면, ‘ O ’를 선택하여 사이클 감지를 활성화하십시오.

함수 이름을 표시할 때 템플릿 매개변수 목록을 제거하려면 ‘ <> ’를 선택하십시오.

Memcheck을 사용하여 메모리 누수 감지, 외부 애플리케이션에서 Valgrind 도구 실행, 프로젝트에 대한 Valgrind 설정 지정, Valgrind CallgrindValgrind 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.