error al abrir el archivo HPROF: IOException: Versión HPROF desconocida


121

Recibo la siguiente excepción al intentar abrir el archivo HPROF (creado por Debug.dumpHprofData) con 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)

¿Cómo resuelvo esto?


bajo el sistema de Windows puede encontrar útil esta publicación stackoverflow.com/questions/14168485/…
— sivi

Respuestas:


298

El hprofarchivo que obtienes de Android tiene un formato específico de Android. Debe convertir hprofla toma de archivos del sistema operativo Android a hprofformato estándar . Para esto, puede usar la hprof-convherramienta que se encuentra en AndroidSDK/tools/hprof-conv.

Por ejemplo:

hprof-conv android.hprof mat.hprof

Y luego abra mat.hprof en Memory Analyzer.

EDITAR: hprof-conv podría estar ubicado AndroidSDK/platform-tools/en algunos paquetes.


66
@inazaruk hprof-conv solía ejecutarse automáticamente al hacer clic en el botón de volcado, no estoy seguro de qué versión de ADT dejó de funcionar, pero es probable que sea un error
— smith324

1
@ smith234, podría ser cierto para el botón en DDMS. Pero cuando Debug.dumpHprofData() se usa, la conversión debe hacerse manualmente.
— inazaruk

Sin embargo, recibí un error de "permiso denegado" en el directorio de herramientas. Tuve que chmod permisos en ese directorio para que funcione.
— IgorGanapolsky

Error tipográfico: la última versión de MAT requiere que la extensión del nombre de archivo sea hprof, no hpof como en el ejemplo anterior.
— greg7gkb

10
solo un aviso, mi hprof-conv estaba bajo sdk \ platform-tools en caso de que alguien se lo perdiera bajo sdk / tools
— cjayem13

41

Si está utilizando Eclipse, simplemente cambie lo siguiente:

  1. Abrir Preferencias (desde el menú Ventana)
  2. Navegue a Android-> DDMS
  3. Cambie la acción HPROF a "Abrir en Eclipse"

En Windows 7 de 64 bits, no pude convertir usando la hprof-convherramienta, simplemente no hizo nada. ¡Así que probé tu método y funciona! Solo debería tener que instalar MAT para eclipsar y ahora funciona perfectamente. gracias
— Paulius Vindzigelskis

3
Puede ser bueno actualizar para explicar que el usuario debe abrir las preferencias de Eclipse primero y luego seleccionar Android en el menú de la izquierda, etc.
— Mick

1
en Luna necesitaba instalar MAT manualmente: Ayuda-> Instalar nuevo software: download.eclipse.org/mat/1.4/update-site
— joecks

En mi Eclipse Mars.2 (4.5.2) (Win 10) "Abrir en Eclipse" ya está configurado y MAT está instalado, pero sigo recibiendo el error "versión desconocida de HPROF". Tuve que convertir el archivo con "hprof-conv".
— Neph

7

hprof-conv Se cambió la ubicación de la herramienta.

Ahora está ubicado en AndroidSDK/platform-tools/hprof-conv

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.