我的eclipse项目中的大多数编译类都有行号和伪行号,如下所示:
在上面的例子中,如果我想在文字行号691(String METHODNAME = "executeAction";
)设置一个断点,那么我必须在文件中的第599行设置断点。如果该行是空白的,实际上不可能在这一行上设置断点。
这使得调试问题非常令人头痛,如果他们以不幸的方式排队,有时甚至是不可能的。我真的不明白为什么会发生这种情况,但我假设它试图以易于调试为代价来提高速度,并且eclipse正在做最好的逆向工程汇编。或者是那种影响的东西。
有什么方法可以重新编译所有这些类,同时强制Eclipse保留原始行号,以便我可以有效地调试本地环境中的问题?
答案 0 :(得分:0)
我认为真正的问题是:这是反编译的源代码,您想知道是否可以教Eclipse以将反编译源的行符号与.class文件中的位置相匹配?
然后答案是否定的。在示例中你可以做的最好的事情是设置一个方法入口断点,它与行号无关(但请注意,由于jvm限制,这种断点会使执行变慢)
如果有问题的代码是opensource,您应该尝试下载匹配的源代码版本。否则,您可以尝试编辑反编译代码,以使实际行号与原始行号尽可能匹配。