打开HPROF文件时出错:IOException:未知的HPROF版本

Asa*_*ahi 119 android memory-leaks dump

尝试Debug.dumpHprofData使用Memory Analyzer 打开HPROF文件(由...创建)时,我收到以下异常:

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)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

ina*_*ruk 290

hprof您从Android获得的文件具有特定于Android的格式.您应该将hprofAndroid OS中的文件转换为标准hprof格式.为此,您可以使用hprof-conv位于的工具AndroidSDK/tools/hprof-conv.

例如:

hprof-conv android.hprof mat.hprof
Run Code Online (Sandbox Code Playgroud)

然后在Memory Analyzer中打开mat.hprof.

编辑:hprof-conv可能位于AndroidSDK/platform-tools/某些包中.

  • 只是抬头,我的hprof-conv是在sdk\platform-tools之下,以防万一有人在sdk/tools下错过了它 (10认同)
  • @inazaruk hprof-conv曾经在单击转储按钮时自动运行,我不确定哪个版本的ADT停止工作但它可能是一个bug (6认同)

小智 41

如果您使用的是Eclipse,只需更改以下内容:

  1. 打开首选项(从"窗口"菜单)
  2. 导航到Android-> DDMS
  3. 将HPROF操作更改为"在Eclipse中打开"

  • 更新以解释用户应首先打开Eclipse首选项然后从左侧菜单中选择Android等可能会更好 (3认同)

Sum*_*and 7

hprof-conv 工具位置发生了变化.

它现在位于 AndroidSDK/platform-tools/hprof-conv