日期:2014-05-20  浏览次数:20680 次

如何在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文件处理库能达到相似的目的?