Java怎样调试jar包中编译好的class文件?

Java怎样调试jar包中编译好的class文件?,第1张

进入调试状态,按步进一步步执行,可以获取当前JAR所在类的文件中执行的状态,但只能看其状态,不能修改,不过也可以找到问题所在了

补充一点,需要在调用jar包的函数前加断点,这样就可以快速定位了

只能调试java源文件,做编程一般不需要碰到class文件,更不要在编辑器里面打开它们

反编译的话,把反编译出来的源代码复制放在另一个项目下面,设断点,编译,然后运行调试。

elipse的调试功能想必大家都已经很熟悉了,虽然通过jdb可以达到同样的目的,但可视化的调试工具会大大提高大家的效率。通过eclipse调试一 般的应用程序或是调试基于服务器的程序都非常的方便,设置完断点后点击debug按钮就OK了。今天给大家介绍下如何通过eclipse+jad对没有源 代码的class文件进行调试.

jad工具是一个非常优秀的java反编译工具,通过jad可将classs文件反编译,但是通过jad反编译的java文件的行位置与原class文件 对应不上,将会导致无法在eclipse中正确设置断点,通过研究,我得出了在没有源码的情况下设置断点的方法,总结后通过eclipse+jad调试没 有源码的程序主要有三步:

1.用jad反编译class后查看源文件

记得一定要带上-lnc参数,这样源文件中会有正确的行数作为注释显示出来。

2.使用breakpoints的import导入修改过的断点记录文件.

断点记录文件可通过导出后修改了再导入。如这个断点刻录文件:

breakpoint enabled=true persistant=true registered=true

resource path=homeAlonesrcjavacomhaajaxMMSenderTest.java

type=1

marker charStart=-1 lineNumber=760

type=org.eclipse.jdt.debug.javaLineBreakpointMarker

attrib name=org.eclipse.jdt.debug.core.typeName

value=com.huawei.mm7.vasp.pdu.MM7SOAPEncoder

attrib name=charEnd value=-1

attrib name=charStart value=-1

attrib name=org.eclipse.debug.core.enabled value=true

attrib name=org.eclipse.jdt.debug.ui.member_start

value=285

attrib name=org.eclipse.debug.core.id

value=org.eclipse.jdt.debug

attrib name=message

value=Line breakpointMM7SOAPEncoder [line 760] - main(String[])

attrib name=org.eclipse.jdt.debug.core.suspendPolicy

value=2

attrib name=org.eclipse.jdt.debug.ui.member_end value=297

attrib name=org.eclipse.jdt.debug.ui.JAVA_ELEMENT_HANDLE_ID

value==homeAlonesrcjava<com.ha.ajax{MMSenderTest.java[MMSenderTest

marker

breakpoint

注意修改:lineNumber属性为想要设置断点的行数,attrib name=org.eclipse.jdt.debug.core.typeName

的value设置为想要debug的class,其它属性基本不用修改。

2.debug

启动debug,运行至断点处会自动suspend,可查看,修改变量的值等debug *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11488945.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存