호출 스택은 CPU 핫스팟, 즉 실행하는 데 시간이 오래 걸리는 코드 섹션을 식별하는 데 유용합니다. 호출 스택은 코드의 어느 부분이 실행되었고 호출된 이유가 무엇인지 파악할 때 유용합니다.
호출 스택 샘플 개요
호출 스택을 샘플링하려면 Android 스튜디오 프로파일러 Home 탭에서 Find CPU Hotspots (Callstack Sample) 작업을 선택합니다. 녹음 파일이 파싱되면 다음과 같은 시각적 요소가 표시됩니다.
CPU 사용량 및 상호작용 타임라인을 보완하기 위해 스레드 섹션에는 앱과 시스템에서 실행하는 모든 호출의 프레임이 표시됩니다. 다음은 호출 스택 샘플을 탐색하기 위한 몇 가지 팁입니다.
- 관심 있는 스레드를 펼치고 단축키를 사용하여 스택 프레임을 탐색합니다. 스택 프레임을 클릭하여 분석 창에서 이벤트 및 관련 호출에 관한 세부정보를 확인합니다.
- 특정 유형의 스택 프레임으로 필터링하려면 프레임 접기를 클릭하고 숨길 프레임 유형을 선택합니다. 프레임을 접으면 스레드 및 분석 섹션에서 모두 삭제됩니다. 조사에 따라 Java 가상 머신(예:
android::AndroidRuntime::start
및art::{...}
)과 시스템 커널 (예:[kernel.kallsyms]+{offset}
)의 프레임을 축소할 수 있습니다. 일반적으로 이는[kernel.kallsyms]
,/apex/
,/system/*
과 관련된 프레임을 축소하는 것과 같습니다.
자바/Kotlin 프로그램은 일반적으로 자바 가상 머신을 통해 실행되므로 Android 스튜디오에서 자바/Kotlin 프로그램의 호출 스택을 수집할 때 호출 스택에는 일반적으로 자바/Kotlin 코드뿐만 아니라 프로그램 자체를 실행하고 프로그램이 시스템 및 하드웨어와 통신하는 데 필요한 네이티브 코드도 포함됩니다.
- 스택 프레임과 연결된 소스 코드로 이동하려면 프레임을 마우스 오른쪽 버튼으로 클릭하고 소스 코드로 이동을 클릭합니다.
- 이벤트 표에서 이벤트와 연결된 스택 프레임을 강조 표시하려면 이벤트를 클릭합니다.
다른 시각적 요소에 관한 자세한 내용은 시스템 트레이스 기록 및 차트 용어집을 참고하세요.
명령줄을 사용하는 샘플 네이티브 코드
내부적으로 Android 스튜디오는 simpleperf를 사용하여 앱의 네이티브 코드를 추적합니다. 특정 기기 CPU를 샘플링하거나 샘플링 기간을 매우 정확하게 지정하는 등 Simpleperf의 추가 옵션을 지정하려면 명령줄에서 simpleperf를 사용하면 됩니다.