lỗi khi mở tệp HPROF: IOException: Phiên bản HPROF không xác định


121

Tôi nhận được ngoại lệ sau khi cố gắng mở tệp HPROF (được tạo bởi Debug.dumpHprofData) bằng Trình phân tích bộ nhớ:

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)

Làm cách nào để giải quyết vấn đề này?


trong hệ thống cửa sổ, bạn có thể thấy bài đăng này hữu ích stackoverflow.com/questions/14168485/…
sivi Ngày

Câu trả lời:


298

Các hproftập tin mà bạn nhận được từ Android có định dạng cụ thể Android. Bạn nên chuyển đổi hproftệp lấy từ hệ điều hành Android sang hprofđịnh dạng tiêu chuẩn . Đối với điều này, bạn có thể sử dụng hprof-convcông cụ có tại AndroidSDK/tools/hprof-conv.

Ví dụ:

hprof-conv android.hprof mat.hprof

Và sau đó mở mat.hprof trong Bộ phân tích bộ nhớ.

CHỈNH SỬA: hprof-chuyển đổi có thể nằm AndroidSDK/platform-tools/trong một số gói.


6
@inazaruk hprof-conv sử dụng để chạy tự động khi nhấp vào nút bãi, tôi không chắc chắn phiên bản của ADT này ngừng làm việc nhưng nhiều khả năng nó là một lỗi
smith324

1
@ smith234, Nó có thể đúng với nút trong DDMS. Nhưng khi Debug.dumpHprofData() được sử dụng, việc chuyển đổi nên được thực hiện thủ công.
inazaruk

Tuy nhiên, tôi đã nhận được lỗi 'quyền bị từ chối' trong thư mục công cụ. Tôi đã phải chmod quyền trong thư mục đó để nó hoạt động.
IgorGanapolsky

Typo: phiên bản mới nhất của MAT yêu cầu phần mở rộng tên tệp là hprof, không phải hpof như trong ví dụ trên.
greg7gkb

10
chỉ là một người đứng đầu lên, tôi hprof-conv là dưới sdk \ platform-công cụ thay vì trong trường hợp bất cứ ai bỏ lỡ nó dưới sdk / công cụ
cjayem13

41

Nếu bạn đang sử dụng Eclipse, chỉ cần thay đổi những điều sau:

  1. Mở Tùy chọn (từ menu Cửa sổ)
  2. Điều hướng đến Android-> DDMS
  3. Thay đổi hành động HPROF thành "Mở trong Eclipse"

Trong Windows 7 64bit, tôi không thể chuyển đổi bằng hprof-convcông cụ, nó không phải là không có gì. Vì vậy, hãy thử phương pháp của bạn và nó hoạt động! Tôi chỉ cần cài đặt MAT để nhật thực và nó hiện hoạt động hoàn hảo. thanks
Paulius Vindzigelskis

3
Nó có thể là tốt để cập nhật để giải thích rằng người dùng nên mở sở thích Eclipse đầu tiên và sau đó chọn Android từ menu bên trái vv
Mick

1
trong Luna tôi cần phải cài đặt bằng tay MAT: Help-> Cài đặt phần mềm mới: download.eclipse.org/mat/1.4/update-site
joecks

Trong Eclipse Mars.2 (4.5.2) (Win 10) của tôi "Mở trong Eclipse" đã được đặt và MAT đã được cài đặt, nhưng tôi vẫn gặp lỗi "phiên bản HPROF không xác định". Tôi đã phải chuyển đổi tệp bằng "hprof-convert".
Neph

7

hprof-conv vị trí công cụ đã thay đổi.

Nó hiện được đặt tại AndroidSDK/platform-tools/hprof-conv

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.