erro ao abrir o arquivo HPROF: IOException: Unknown HPROF Version


121

Estou recebendo a seguinte exceção ao tentar abrir o arquivo HPROF (criado por Debug.dumpHprofData) com o 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)

Como eu resolvo isso?


sob o sistema de janelas que você pode encontrar este útil pós stackoverflow.com/questions/14168485/...
sivi

Respostas:


298

O hprofarquivo que você obtém do Android tem um formato específico para o Android. Você deve converter a hprofcaptura de arquivo do sistema operacional Android para o hprofformato padrão . Para isso, você pode usar a hprof-convferramenta localizada em AndroidSDK/tools/hprof-conv.

Por exemplo:

hprof-conv android.hprof mat.hprof

E abra o mat.hprof no Memory Analyzer.

EDIT: hprof-conv pode estar localizado AndroidSDK/platform-tools/em alguns pacotes.


6
@inazaruk hprof-conv usado para executar automaticamente quando clicar no botão de despejo, eu não tenho certeza de qual versão do ADT este parou de funcionar, mas seu provável um erro
smith324

1
@ smith234, pode ser verdade para o botão no DDMS. Mas quando Debug.dumpHprofData() é usada, a conversão deve ser feita manualmente.
precisa saber é o seguinte

No entanto, estava recebendo um erro de 'permissão negada' no diretório de ferramentas. Eu tive que chmod permissões nesse diretório para que ele funcionasse.
IgorGanapolsky

Erro de digitação: a versão mais recente do MAT exige que a extensão do nome do arquivo seja hprof, não hpof, como no exemplo acima.
precisa saber é o seguinte

10
apenas um heads-up, meu hprof-conv estava sob SDK \ platform-tools vez no caso de alguém perdeu sob SDK / ferramentas
cjayem13

41

Se você estiver usando o Eclipse, basta alterar o seguinte:

  1. Abra Preferências (no menu Janela)
  2. Navegue para Android-> DDMS
  3. Altere a ação HPROF para "Abrir no Eclipse"

No Windows 7 de 64 bits, eu não conseguia converter usando a hprof-convferramenta, simplesmente não fazia nada. Então tentei o seu método e funciona! Eu só deveria ter que instalar o MAT para eclipsar e agora funciona perfeitamente. obrigado
Paulius Vindzigelskis

3
Pode ser bom atualizar para explicar que o usuário deve abrir primeiro as preferências do Eclipse e, em seguida, selecionar Android no menu à esquerda, etc.
Mick

1
no Luna eu precisava instalar o MAT manualmente: Ajuda-> Instalar novo software: download.eclipse.org/mat/1.4/update-site
joecks

No meu Eclipse Mars.2 (4.5.2) (Win 10), "Abrir no Eclipse" já está definido e o MAT está instalado, mas ainda assim recebo o erro "versão desconhecida do HPROF". Eu tive que converter o arquivo com "hprof-conv".
Neph 5/18

7

hprof-conv a localização da ferramenta foi alterada.

Agora está localizado em AndroidSDK/platform-tools/hprof-conv

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.