kesalahan membuka file HPROF: IOException: Versi HPROF Tidak Dikenal

121

Saya mendapatkan pengecualian berikut saat mencoba membuka file HPROF (dibuat oleh Debug.dumpHprofData) dengan Memory Analyzer:

java.io.IOException: Unknown HPROF Version (JAVA PROFILE 1.0.3)
at org.eclipse.mat.hprof.AbstractParser.readVersion(AbstractParser.java:124)
at org.eclipse.mat.hprof.Pass1Parser.read(Pass1Parser.java:69)
at org.eclipse.mat.hprof.HprofIndexBuilder.fill(HprofIndexBuilder.java:65)
at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:203)
at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114)
at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:143)
at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:123)
at org.eclipse.mat.ui.snapshot.ParseHeapDumpJob.run(ParseHeapDumpJob.java:56)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

Bagaimana cara mengatasi ini?

Asahi
sumber
di bawah sistem windows Anda mungkin menemukan posting ini bermanfaat stackoverflow.com/questions/14168485/…
sivi

Jawaban:

298

The hproffile yang Anda dapatkan dari Android memiliki format khusus android. Anda harus mengonversi hproffile yang diambil dari OS Android ke dalam hprofformat standar . Untuk ini, Anda dapat menggunakan hprof-convalat yang terletak di AndroidSDK/tools/hprof-conv.

Sebagai contoh:

hprof-conv android.hprof mat.hprof

Dan kemudian buka mat.hprof di Memory Analyzer.

EDIT: hprof-conv mungkin terletak di AndroidSDK/platform-tools/dalam beberapa bundel.

inazaruk
sumber
6
@inazaruk hprof-conv dulu berjalan secara otomatis ketika mengklik tombol dump, saya tidak yakin versi ADT mana yang berhenti berfungsi tetapi kemungkinan besar bug
smith324
1
@ smith234, Mungkin benar untuk tombol di DDMS. Namun bila Debug.dumpHprofData() digunakan konversi harus dilakukan secara manual.
inazaruk
Namun, saya mendapatkan kesalahan 'izin ditolak' di direktori alat. Saya harus mengubah izin di direktori itu agar dapat berfungsi.
IgorGanapolsky
Typo: versi terbaru dari MAT membutuhkan ekstensi nama file adalah hprof, bukan hpof seperti pada contoh di atas.
greg7gkb
10
hanya sebuah peringatan, hprof-conv saya berada di bawah sdk \ platform-tools sebagai gantinya jika ada yang melewatkannya di bawah sdk / tools
cjayem13
41

Jika Anda menggunakan Eclipse, ubah saja berikut ini:

  1. Buka Preferensi (dari menu Jendela)
  2. Arahkan ke Android-> DDMS
  3. Ubah tindakan HPROF menjadi "Open in Eclipse"
Apirak Lunla
sumber
Di Windows 7 64bit, saya tidak dapat mengonversi menggunakan hprof-convalat, itu tidak apa-apa. Jadi coba metode Anda dan berhasil! Saya hanya harus menginstal MAT ke gerhana dan sekarang berfungsi dengan sempurna. terima kasih
Paulius Vindzigelskis
3
Mungkin bagus untuk memperbarui untuk menjelaskan bahwa pengguna harus membuka preferensi Eclipse terlebih dahulu dan kemudian memilih Android dari menu sebelah kiri dll
Mick
1
di Luna saya perlu menginstal MAT secara manual: Help-> Install New Software: download.eclipse.org/mat/1.4/update-site
joecks
Di Eclipse Mars.2 (4.5.2) (Win 10) saya, "Open in Eclipse" telah disetel dan MAT terinstal, namun saya masih mendapatkan kesalahan "versi HPROF tidak diketahui". Saya harus mengonversi file dengan "hprof-conv".
Nef
7

hprof-conv lokasi alat diubah.

Sekarang terletak di AndroidSDK/platform-tools/hprof-conv

Sumoanand
sumber