Dex debug_info 格式

Dex debug_info format

在查看 dex 文件时,我注意到在与每个 code_item 关联的 debug_info_item 中,可能有:

我不明白我应该如何解析这些案例。我对 debug_info_item 格式 (https://source.android.com/devices/tech/dalvik/dex-format.html) 有什么不理解的地方吗?

另外,为了确认一下,我说得对吗:

参数寄存器都是隐式本地的,所以你可以有一个 DBG_END_LOCAL 而没有 DBG_START_LOCAL 作为参数寄存器。在 "existing" 本地的 DBG_START_LOCAL 的情况下,我想你只是隐含地结束以前的本地并开始新的本地。

但请记住,调试信息仅供参考。没有任何东西可以证明它的结构是否正确,甚至是否真的有意义。例如混淆器可以添加无意义的调试信息,而不会导致 dex 文件在使用时无法通过验证。

例如,我最近 fixed a bug in baksmali 与 start/end 局部变量相关,因为寄存器值超出了该方法的范围。