1. adb 이용
- 먼저 root 권한이 있는지, /data/misc에 쓰기 권한이 있는지 확인합니다.
- shell로 들어가서 해당 프로세스에 SIGUSR1 시그널을 날리면 힙덤프 파일이 떨궈집니다.
$ adb shell
# mkdir /data/misc
# chmod 777 /data/misc (/data/misc에 쓰기권한 확인)
# ps (애플리케이션 프로세스 ID 확인)
# kill -10 <pid> (SIGUSR1 시그널 전송)
(잠시후 /data/misc 에 heap-dump-*.hprof 파일 생성됨)
$ adb pull <dump-file> <as-file> (로컬로 파일 추출)
2. API 이용
- android.os.Debug 클래스의 public static void dumpHprofData(String fileName) 메소드를 호출합니다.
- 단, fileName은 쓰기 권한 있는 경로를 지정해야합니다.
3. DDMS 이용
- 애플리케이션에 WRITE_EXTERNAL_STORAGE 퍼미션이 설정됐는지 확인합니다.
- sdcard가 있고, sdcard에 쓰기 권한이 있는지 확인합니다.
- 해당 프로세스 선택후 위 그림에서처럼 힙덤프 버튼을 누르면 /sdcard 경로에 <패키지>.hprof 파일이 생성됩니다.
힙덤프 파일 포맷 변경
위 세가지 방법으로 생성한 힙덤프 파일은 Dalvik VM 고유의 포맷을 가집니다. 안드로이드 SDK에 포함된 hprof-conv.exe를 이용하여 표준 hprof 포맷으로 변경할 수 있습니다.
$ hprof-conv.exe <달빅 hprof 파일> <표준 hprof 파일>
이렇게 변경된 hprof 파일은 jhat이나 Eclipse Memory Analyzer(MAT) 같은 Heap 덤프 분석툴을 이용하여 시각적으로 분석할 수 있습니다.
'Android' 카테고리의 다른 글
[안드로이드] Resources 개요 (2) | 2010.05.11 |
---|---|
[안드로이드] Heap 메모리 분석 (2) | 2010.05.10 |
[안드로이드] 문제해결 방법론 메모 (0) | 2010.05.03 |
[안드로이드] 반복 테스트용 dos 배치 스크립트 (5) | 2010.05.03 |
[안드로이드] 안드로이드 테스트 관련 자료 (0) | 2010.05.03 |