호출 스택 샘플링

호출 스택은 CPU 핫스팟, 즉 실행하는 데 시간이 오래 걸리는 코드 섹션을 식별하는 데 유용합니다. 호출 스택은 코드의 어느 부분이 실행되었고 호출된 이유가 무엇인지 파악할 때 유용합니다.

호출 스택 샘플 개요

호출 스택을 샘플링하려면 Android 스튜디오 프로파일러 Home 탭에서 Find CPU Hotspots (Callstack Sample) 작업을 선택합니다. 녹음 파일이 파싱되면 다음과 같은 시각적 요소가 표시됩니다.

CPU 사용량상호작용 타임라인을 보완하기 위해 스레드 섹션에는 앱과 시스템에서 실행하는 모든 호출의 프레임이 표시됩니다. 다음은 호출 스택 샘플을 탐색하기 위한 몇 가지 팁입니다.

  • 관심 있는 스레드를 펼치고 단축키를 사용하여 스택 프레임을 탐색합니다. 스택 프레임을 클릭하여 분석 창에서 이벤트 및 관련 호출에 관한 세부정보를 확인합니다.
  • 특정 유형의 스택 프레임으로 필터링하려면 프레임 접기를 클릭하고 숨길 프레임 유형을 선택합니다. 프레임을 접으면 스레드분석 섹션에서 모두 삭제됩니다. 조사에 따라 Java 가상 머신(예: android::AndroidRuntime::startart::{...})과 시스템 커널 (예: [kernel.kallsyms]+{offset})의 프레임을 축소할 수 있습니다. 일반적으로 이는 [kernel.kallsyms], /apex/, /system/*과 관련된 프레임을 축소하는 것과 같습니다.

자바/Kotlin 프로그램은 일반적으로 자바 가상 머신을 통해 실행되므로 Android 스튜디오에서 자바/Kotlin 프로그램의 호출 스택을 수집할 때 호출 스택에는 일반적으로 자바/Kotlin 코드뿐만 아니라 프로그램 자체를 실행하고 프로그램이 시스템 및 하드웨어와 통신하는 데 필요한 네이티브 코드도 포함됩니다.

  • 스택 프레임과 연결된 소스 코드로 이동하려면 프레임을 마우스 오른쪽 버튼으로 클릭하고 소스 코드로 이동을 클릭합니다.
  • 이벤트 표에서 이벤트와 연결된 스택 프레임을 강조 표시하려면 이벤트를 클릭합니다.

다른 시각적 요소에 관한 자세한 내용은 시스템 트레이스 기록차트 용어집을 참고하세요.

명령줄을 사용하는 샘플 네이티브 코드

내부적으로 Android 스튜디오는 simpleperf를 사용하여 앱의 네이티브 코드를 추적합니다. 특정 기기 CPU를 샘플링하거나 샘플링 기간을 매우 정확하게 지정하는 등 Simpleperf의 추가 옵션을 지정하려면 명령줄에서 simpleperf를 사용하면 됩니다.