помилка відкриття файлу HPROF: IOException: невідома версія HPROF


121

Під час спроби відкрити файл HPROF (створений Debug.dumpHprofData) за допомогою аналізатора пам'яті:

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)

Як вирішити це?


під вікном системи ви можете знайти це повідомлення корисного stackoverflow.com/questions/14168485 / ...
SiVi

Відповіді:


298

hprofФайл , який ви отримуєте від Android має андроїд формат , специфічний. Вам слід перетворити hprofфайл, знятий з ОС Android, у стандартний hprofформат. Для цього ви можете використовувати hprof-convінструмент, який знаходиться за адресою AndroidSDK/tools/hprof-conv.

Наприклад:

hprof-conv android.hprof mat.hprof

А потім відкрийте mat.hprof в аналізаторі пам’яті.

EDIT: hprof-conv може бути розташований AndroidSDK/platform-tools/в деяких пакетах.


6
@inazaruk hprof-conv використовувався автоматично при натисканні кнопки дамп, я не впевнений, у якій версії ADT це перестало працювати, але, ймовірно, помилка
smith324

1
@ smith234, Це може бути правдою для кнопки в DDMS. Але коли Debug.dumpHprofData() використовується конверсія, слід проводити вручну.
іназарук

Я все ж отримував помилку "відмовлено у дозволі" в каталозі інструментів. Я повинен був chmod дозволів у цьому каталозі, щоб він працював.
ІгорГанапольський

Typo: остання версія MAT вимагає, щоб розширення імені файлу було hprof, а не hpof, як у наведеному вище прикладі.
greg7gkb

10
просто головою вгору, мій hprof-conv був під sdk \ platform-tools замість того, якщо хтось пропустив його під sdk / tools
cjayem13

41

Якщо ви використовуєте Eclipse, просто змініть наступне:

  1. Відкрити налаштування (з меню "Вікно")
  2. Перейдіть до Android-> DDMS
  3. Змініть дію HPROF на "Open in Eclipse"

У Windows 7 64bit, я не міг конвертувати за допомогою hprof-convінструменту, він просто нічого не робив. Тож спробував ваш метод, і він працює! Я просто повинен був встановити MAT для затемнення, і він зараз працює чудово. спасибі
Паулюс Віндігельскіс

3
Може бути корисно оновити, щоб пояснити, що користувач повинен спершу відкрити налаштування Eclipse, а потім вибрати меню Android з лівого меню тощо
Мік

1
у Луні мені потрібно було встановити MAT вручну: довідка-> Встановити нове програмне забезпечення: download.eclipse.org/mat/1.4/update-site
joecks

У моєму Eclipse Mars.2 (4.5.2) (Win 10) "Open in Eclipse" вже встановлено, і MAT встановлений, але я все одно отримую помилку "невідома версія HPROF". Мені довелося перетворити файл із "hprof-conv".
Неф

7

hprof-conv розташування інструменту було змінено.

Зараз він знаходиться за адресою AndroidSDK/platform-tools/hprof-conv

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.