Android Studio에서 생성한 Heap Dump 와 Eclipse MAT 연동 방법
Android Studio 1.0 버전이 정식 릴리즈 되면서, 많은 편의성들이 강화 되었습니다.
이미 안드로이드 개발에 40%가 Eclipse , 30% 정도가 Android Studio로 개발을 하고 있고, Google 공식적으로 Eclipse ADT Plugin을 개발하지 않을 거라는 이야기에 이미 대세는 Android Studio로 넘어갔다고 볼수 있습니다.
제가 오랫동안 Android Studio로 넘어가지 못한 이유중에 하나인 MAT (Memory Analyzer) 가 크게 작동을 하였는데요. 1.0을 설치하고 모든 개발 환경을 Android Studio로 이관중 Heam Dump 분석에 문제가 생겼습니다.
안드로이드 개발시 가장 많이 만나는 두가지 크래시인 NPE 와 OOM중 Out Of Memory를 잡기 위해 사용하는 유일한 도구라 할수 있는 MAT가 Android Studio에서 만든 hprof (heam dump) 파일을 분석하지 못하는 문제가 발생한 것입니다. (Eclipse 같은 경우는 dump만 뜨면 자동으로 MAT를 뛰우며 분석 화면을 뛰워줍니다.)
MAT에서 Hprof (dump) 파일을 열때 만나는 에러는 다음과 같습니다.
Error opening heap dump 'com.game.hprof'. Check the error log for further details.
Error opening heap dump 'com.game.hprof.hprof'. Check the error log for further details.
Unknown HPROF Version (JAVA PROFILE 1.0.3) (java.io.IOException)
Unknown HPROF Version (JAVA PROFILE 1.0.3)
순간 깜짝 놀랐으나, 구글링을 통해 쉽게 답을 얻을수 있었습니다.
원인은 Android Studio에서 뜨는 덤프는 Android SDK에서 생성하는 Dump 포멧으로 아직 생성해 주지 않는 것으로 판단됩니다.
hrprof-conv 라는 명령어를 통해서 쉽게 이 문제를 해결할수 있습니다.
hprof-conv <infile> <outfile>
위와 같은 명령어를 통해 변환된 파일을 만드시고, 이 파일을 Eclipse MAT로 Open 하시면 정상적인 화면을 얻으실수 있습니다.