Fehler beim Öffnen der HPROF-Datei: IOException: Unbekannte HPROF-Version

121

Beim Versuch, eine HPROF-Datei (erstellt von Debug.dumpHprofData) mit Memory Analyzer zu öffnen, wird die folgende Ausnahme angezeigt :

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)

Wie löse ich das?

Asahi
quelle
Unter Windows System finden Sie diesen Beitrag möglicherweise hilfreich stackoverflow.com/questions/14168485/…
sivi

Antworten:

298

Die hprofDatei, die Sie von Android erhalten, hat ein Android-spezifisches Format. Sie sollten hprofFile Take von Android OS in das Standardformat hprofkonvertieren. Hierfür können Sie ein hprof-convTool verwenden, das sich unter befindet AndroidSDK/tools/hprof-conv.

Beispielsweise:

hprof-conv android.hprof mat.hprof

Öffnen Sie dann mat.hprof im Memory Analyzer.

BEARBEITEN: hprof-conv befindet sich möglicherweise AndroidSDK/platform-tools/in einigen Bundles unter.

inazaruk
quelle
6
@inazaruk hprof-conv wurde automatisch ausgeführt, wenn auf die Dump-Schaltfläche geklickt wurde. Ich bin nicht sicher, welche Version von ADT dies nicht mehr funktioniert, aber es ist wahrscheinlich ein Fehler
smith324
1
@ smith234, Möglicherweise trifft dies auf die Schaltfläche in DDMS zu. Bei Debug.dumpHprofData() Verwendung sollte die Konvertierung jedoch manuell erfolgen.
Inazaruk
Trotzdem wurde im Tools-Verzeichnis der Fehler "Berechtigung verweigert" angezeigt. Ich musste die Berechtigungen in diesem Verzeichnis ändern, damit es funktioniert.
IgorGanapolsky
Tippfehler: Für die neueste Version von MAT muss die Dateinamenerweiterung hprof und nicht hpof wie im obigen Beispiel sein.
Greg7gkb
10
Nur ein Kopf hoch, mein hprof-conv war stattdessen unter sdk \ platform-tools, falls jemand es unter sdk / tools verpasst hat
cjayem13
41

Wenn Sie Eclipse verwenden, ändern Sie einfach Folgendes:

  1. Öffnen Sie die Einstellungen (im Menü Fenster).
  2. Navigieren Sie zu Android-> DDMS
  3. Ändern Sie die HPROF-Aktion in "In Eclipse öffnen".
Apirak Lunla
quelle
In Windows 7 64bit konnte ich nicht mit dem hprof-convTool konvertieren , es gab einfach nichts. Also probiere deine Methode aus und es funktioniert! Ich sollte nur MAT installieren müssen, um Eclipse zu spielen, und es funktioniert jetzt perfekt. danke
Paulius Vindzigelskis
3
Es kann sinnvoll sein, ein Update durchzuführen, um zu erklären, dass der Benutzer zuerst die Eclipse-Einstellungen öffnen und dann Android aus dem Menü auf der linken Seite usw. auswählen sollte
Mick
1
In Luna musste ich MAT manuell installieren: Hilfe-> Neue Software installieren: download.eclipse.org/mat/1.4/update-site
Joecks
In meinem Eclipse Mars.2 (4.5.2) (Win 10) ist "In Eclipse öffnen" bereits eingestellt und MAT installiert, dennoch wird der Fehler "Unbekannte HPROF-Version" angezeigt. Ich musste die Datei mit "hprof-conv" konvertieren.
Neph
7

hprof-conv Werkzeugposition wurde geändert.

Es befindet sich jetzt bei AndroidSDK/platform-tools/hprof-conv

Sumoanand
quelle