Java dalvik字节码中的地址偏移量与实际指令跟踪不匹配

Java dalvik字节码中的地址偏移量与实际指令跟踪不匹配,java,android,bytecode,dalvik,Java,Android,Bytecode,Dalvik,您好,我正在运行一个应用程序,其中Dex文件指令具有地址或PC类似0x000253DC,但当我收到实时指令时,跟踪PC或地址类似41ed7748 它们的范围完全不同 我只是想知道这是正常的还是我弄错了 谢谢。Android上本机崩溃堆栈跟踪中的地址显示为库偏移量,因此高位将归零。由于库位置可能会在不同的运行期间发生变化,因此堆栈跟踪中不包括地址的较高部分 见例 (所有这些都与Dalvik字节码无关,所以我对DEX文件引用有点困惑。希望我没有完全偏离基准。)嗨,让我澄清一下,我可以使用dexdum

您好,我正在运行一个应用程序,其中Dex文件指令具有地址或
PC
类似
0x000253DC
,但当我收到实时指令时,跟踪
PC
或地址类似
41ed7748
它们的范围完全不同

我只是想知道这是正常的还是我弄错了


谢谢。

Android上本机崩溃堆栈跟踪中的地址显示为库偏移量,因此高位将归零。由于库位置可能会在不同的运行期间发生变化,因此堆栈跟踪中不包括地址的较高部分

见例


(所有这些都与Dalvik字节码无关,所以我对DEX文件引用有点困惑。希望我没有完全偏离基准。)

嗨,让我澄清一下,我可以使用dexdump从DEX文件中获取Dalvik指令,它具有以下格式00041ead:12f0,其中前12位如您所说是零位。现在,如果我可以得到运行时指令跟踪,我最终会得到类似于41ed7748:12f0的东西。我的问题是将指令从dex映射到我得到的跟踪,如何匹配pc偏移。这样我就可以知道执行了来自dex文件的哪些指令了?dex文件也是内存映射的,所以我希望地址的低位也能匹配到那里。“运行时指令跟踪”从何而来?你能举个例子吗?托管代码的跟踪通常不会显示地址。嗨,我连接到dalvik代码并在log.Ah中打印了说明。您需要转储
/proc//maps
以计算出DEX文件映射的基址,然后减去该基址以将偏移量输入到DEX文件中。与您对本机PC的操作类似;看这里是新闻应用程序npr的地图转储,我应该查找448fc000-4494f000 r--p 00000000 b3:39 147562/data/dalvik缓存吗/data@app@org.npr.android.news-1。apk@classes.dex因为事情太多了?