mildsunrise / darter

:detective: Dart / Flutter VM snapshot analyzer
GNU Affero General Public License v3.0
305 stars 54 forks source link

其他版本的DartVM不兼容时,应该怎么适配呢? #1

Closed hdw09 closed 3 years ago

hdw09 commented 3 years ago

[00657034]: WARN: An inconsistency was found; failing. Pass strict=False to treat inconsistencies as warnings and continue parsing. Traceback (most recent call last): File "/Users/david/Downloads/darter-master/reLibapp.py", line 82, in s = parse_elf_snapshot('samples/libapp.so') File "/Users/david/Downloads/darter-master/darter/file.py", line 45, in parse_elf_snapshot base = Snapshot(data=blobs[0], data_offset=offsets[0], File "/Users/david/Downloads/darter-master/darter/core.py", line 252, in parse self.parse_header() File "/Users/david/Downloads/darter-master/darter/core.py", line 360, in parse_header self.warning( File "/Users/david/Downloads/darter-master/darter/core.py", line 311, in warning raise ParseError(self.data_offset + self.data.tell(), message) darter.core.ParseError: (6647860, "Version (e4f9b9451fcada41ed7b733311c4a591) doesn't match with the one this parser was made for")

比如这个版本 e4f9b9451fcada41ed7b733311c4a591

mildsunrise commented 3 years ago

that hash you see there (e4f9b9451fcada41ed7b733311c4a591) is called the snapshot hash. you can learn more about it here: https://github.com/mildsunrise/darter/blob/master/info/versions.md

it changes every time the relevant code in dart-sdk is touched. Ideally you would review the changes to dart-sdk and adapt darter to them.

You can just try changing EXPECTED_VERSION to your version, maybe you're lucky and your snapshot parses fine without changes :)

If you want you can send the snapshot to me, and I'll look at it

hdw09 commented 3 years ago

Thanks♪(・ω・)ノ ,I get it