当前位置: 代码迷 >> J2SE >> 怎么在java 的class文件中的jvm字节码定位对应回到java源程序的某一行
  详细解决方案

怎么在java 的class文件中的jvm字节码定位对应回到java源程序的某一行

热度:9742   发布时间:2013-02-25 00:00:00.0
如何在java 的class文件中的jvm字节码定位对应回到java源程序的某一行?
我有一个java源文件,如list.java 文件,里边有一个方法。
编译成class文件后,里边的方法区内有对应的方法的字节码。
我如何知道源文件中方法的第某行对应到字节码中的某行呢?
有没有类似这种标注的工具?

------解决方案--------------------------------------------------------
这个。。。
只能自己用javap -c list来查看字节码指令,然后和list.java的源代码比较了
类似工具估计即使有也不会很完美,因为即使是最好的反编译工具,反编译回来的代码都未必和源代码完全一致。

------解决方案--------------------------------------------------------
javap -c -l list

javap.exe的参数-l用于输出源代码行号与字节码行号的对应表。

例如程序:
Java code
public class NumTest {    public static void main(String args[]) {        int a=1,b=2;                System.out.println(a+b);    }}
------解决方案--------------------------------------------------------
探讨
多谢楼上两位。
我现在是用程序操作字节码文件,而不是人看。当然通过上边的方法也可以写命令来实现,但不算是正途。
既然javap命令知道这个对应关系,javap是用什么办法知道的?这个对应表从哪里能得到呢?
有没有写好的class文件处理库能达到相似的目的?
  相关解决方案