błąd podczas otwierania pliku HPROF: IOException: Nieznana wersja HPROF


121

Otrzymuję następujący wyjątek podczas próby otwarcia pliku HPROF (utworzonego przez Debug.dumpHprofData) za pomocą narzędzia 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)

Jak mam to rozwiązać?


pod systemem Windows ten post może być pomocny stackoverflow.com/questions/14168485/ ...
sivi

Odpowiedzi:


298

hprofPlik można uzyskać z Androidem ma android formatu konkretnego. Powinieneś przekonwertować hprofplik pobrany z systemu operacyjnego Android do standardowego hprofformatu. W tym celu możesz użyć hprof-convnarzędzia znajdującego się pod adresem AndroidSDK/tools/hprof-conv.

Na przykład:

hprof-conv android.hprof mat.hprof

Następnie otwórz mat.hprof w narzędziu Memory Analyzer.

EDYCJA: hprof-conv może znajdować się AndroidSDK/platform-tools/w niektórych pakietach.


6
@inazaruk hprof-conv używany do automatycznego uruchamiania po kliknięciu przycisku zrzutu, nie jestem pewien, która wersja ADT przestała działać, ale prawdopodobnie jest to błąd
smith324

1
@ smith234, Może to być prawda dla przycisku w DDMS. Ale kiedy Debug.dumpHprofData() jest używana, konwersja powinna być wykonana ręcznie.
inazaruk

Mimo to otrzymywałem błąd „Odmowa uprawnień” w katalogu narzędzi. Musiałem mieć uprawnienia chmod w tym katalogu, aby działał.
IgorGanapolsky

Literówka: najnowsza wersja MAT wymaga, aby rozszerzenie nazwy pliku to hprof, a nie hpof, jak w powyższym przykładzie.
greg7gkb

10
tylko jedno ostrzeżenie, mój hprof-conv był pod sdk \ platform-tools, na wypadek, gdyby ktoś go przegapił pod sdk / tools
cjayem13

41

Jeśli używasz Eclipse, po prostu zmień następujące:

  1. Otwórz Preferencje (z menu Okno)
  2. Przejdź do Android-> DDMS
  3. Zmień działanie HPROF na „Otwórz w Eclipse”

W 64-bitowym systemie Windows 7 nie mogłem dokonać konwersji za pomocą hprof-convnarzędzia, po prostu nic nie zrobiło. Więc wypróbowałeś swoją metodę i działa! Powinienem tylko zainstalować MAT do zaćmienia i teraz działa idealnie. dzięki
Paulius Vindzigelskis

3
Dobrze byłoby zaktualizować, aby wyjaśnić, że użytkownik powinien najpierw otworzyć preferencje Eclipse, a następnie wybrać Androida z menu po lewej stronie itp.
Mick

1
w Luna musiałem ręcznie zainstalować MAT: Pomoc-> Zainstaluj nowe oprogramowanie: download.eclipse.org/mat/1.4/update-site
joecks

W moim Eclipse Mars.2 (4.5.2) (Win 10) "Otwórz w Eclipse" jest już ustawione i MAT jest zainstalowany, ale nadal pojawia się błąd "nieznana wersja HPROF". Musiałem przekonwertować plik za pomocą „hprof-conv”.
Neph

7

hprof-conv zmieniła się lokalizacja narzędzia.

Obecnie znajduje się pod adresem AndroidSDK/platform-tools/hprof-conv

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.