이 페이지에서

프로파일 함수 실행

Valgrind의 도구 제품군에 있는 Callgrind 도구를 사용하면 함수 실행과 관련된 문제를 감지할 수 있습니다. Callgrind에서 생성된 데이터 파일을 KCachegrind 프로파일 데이터 시각화 도구에 로드하여 성능 결과를 탐색할 수 있습니다.

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

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

프로파일링용 앱 빌드

Callgrind는 애플리케이션이 실행될 때 실행되는 함수의 호출 기록을 기록합니다. 실행된 명령어 수, 소스 라인과의 관계, 함수 간 호출자와 수신자의 관계, 호출 횟수 등을 수집합니다. 캐시 시뮬레이션 또는 분기 예측을 사용하여 애플리케이션의 런타임 동작에 대한 정보를 수집할 수도 있습니다.

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

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

데이터 수집

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

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

    콜그라인드 보기 도구 모음

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

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

다시 로드 을 선택하여 모든 이벤트 카운터를 초기화합니다.

수집된 모든 데이터를 삭제하려면 청소 을 선택합니다.

KCachegrind 을 선택하면 KCachegrind에서 데이터를 볼 수 있습니다. Qt Creator 은 KCachegrind를 실행하고 시각화를 위해 데이터를 로드합니다.

수집된 데이터 보기

분석 결과는 Callgrind 보기에 표시됩니다. 보기를 분리하여 이동할 수 있습니다. 변경 사항을 되돌리려면 Views > Reset to Default Layout 을 선택합니다.

Views 을 선택하여 보기 및 보기 제목을 표시하거나 숨깁니다. Visualization 보기는 기본적으로 숨겨져 있습니다. 다시 실행 을 선택하여 표시되는 데이터를 새로 고치려면 표시되는 데이터를 새로 고칩니다.

데이터를 수집하는 대신 열기 을 선택하여 외부 로그 파일을 Callgrind 보기에 로드할 수 있습니다.

콜그라인드 보기

Filter 필드에 문자열을 입력하여 결과를 필터링합니다.

Functions 보기에서 함수에 커서를 이동하면 해당 함수에 대한 자세한 정보를 볼 수 있습니다.

함수를 두 번 클릭하면 Callers 보기에서 호출하는 함수에 대한 정보를, Callees 보기에서 호출된 함수에 대한 정보를 볼 수 있습니다.

Callee 보기에서 함수 간에 이동하려면 이전 게시물 또는 다음 을 선택합니다.

비용 형식을 설정하려면 $ 을 선택합니다. 절대 또는 상대 비용은 물론 부모에 대한 상대 비용도 볼 수 있습니다. 프로젝트에서 발생한 프로파일링 정보만 보려면 필터 을 선택합니다.

재귀 또는 순환 함수 호출을 올바르게 처리하려면 O 을 선택하여 주기 감지를 활성화합니다.

함수 이름을 표시할 때 템플릿 매개변수 목록을 제거하려면 <> 을 선택하세요.

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

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.