[原创] 如何用Eclispe调试java -jar xxx.jar 方式执行的jar包
2016-04-28 16:51
465 查看
有时候,我们经常会需要调试 java -jar xxx.jar方式运行的代码,而不是必须在Eclipse中用Debug或者Run的方式运行。比如我们拿到的SourceCode不完整。Java提供了一种调试的机制。
1. 我们可以使用命令:
java -agentlib:jdwp=transport=dt_socket,server=y,address=8050,suspend=y -jar xxx.jar
来打开调试。运行后,它会在8050端口监听调试器的Attach的信号。
2. 然后,我们在Eclipse中添加一个调试。打开Debug-Debug Configuration-Remote Java Application. 然后New 一个新的。添加上端口。
然后点击Debug开始即可。它就会命中你所打的断点了。
注意这里填写的端口要跟前面命令里面设置的端口一样。另外,注意看一下Connect旁边的Source标签。里面可以设置在哪个目录查找源文件。也就是说,你甚至可以在没有源文件的情况下用单步跳转的方式跳进某个类去,然后再选择源文件。在android的调试中,这是比较常见的情况。
再看一下之前那个命令的解释。运行 Java 命令,会看到如下的解释:
-agentlib:<libname>[=<选项>]
加载本机代理库 <libname>, 例如 -agentlib:hprof
另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
再运行java -agentlib:jdwp=help. 可以查看JDWP支持的所有选项,不过这里并不知道 transport除了 dt_socket以外还有什么选项。
Java Debugger JDWP Agent Library
--------------------------------
(see http://java.sun.com/products/jpda for more information)
jdwp usage: java -agentlib:jdwp=[help]|[<option>=<value>, ...]
Option Name and Value Description Default
--------------------- ----------- -------
suspend=y|n wait on startup? y
transport=<name> transport spec none
address=<listen/attach address> transport spec ""
server=y|n listen for debugger? n
launch=<command line> run debugger on event none
onthrow=<exception name> debug on throw none
onuncaught=y|n debug on any uncaught? n
timeout=<timeout value> for listen/attach in milliseconds n
mutf8=y|n output modified utf-8 n
quiet=y|n
运行 java -agentlib:hprof=help, 内容比较多就不贴了。是一个CPU和内存的分析工具。
1. 我们可以使用命令:
java -agentlib:jdwp=transport=dt_socket,server=y,address=8050,suspend=y -jar xxx.jar
来打开调试。运行后,它会在8050端口监听调试器的Attach的信号。
2. 然后,我们在Eclipse中添加一个调试。打开Debug-Debug Configuration-Remote Java Application. 然后New 一个新的。添加上端口。
然后点击Debug开始即可。它就会命中你所打的断点了。
注意这里填写的端口要跟前面命令里面设置的端口一样。另外,注意看一下Connect旁边的Source标签。里面可以设置在哪个目录查找源文件。也就是说,你甚至可以在没有源文件的情况下用单步跳转的方式跳进某个类去,然后再选择源文件。在android的调试中,这是比较常见的情况。
再看一下之前那个命令的解释。运行 Java 命令,会看到如下的解释:
-agentlib:<libname>[=<选项>]
加载本机代理库 <libname>, 例如 -agentlib:hprof
另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
再运行java -agentlib:jdwp=help. 可以查看JDWP支持的所有选项,不过这里并不知道 transport除了 dt_socket以外还有什么选项。
Java Debugger JDWP Agent Library
--------------------------------
(see http://java.sun.com/products/jpda for more information)
jdwp usage: java -agentlib:jdwp=[help]|[<option>=<value>, ...]
Option Name and Value Description Default
--------------------- ----------- -------
suspend=y|n wait on startup? y
transport=<name> transport spec none
address=<listen/attach address> transport spec ""
server=y|n listen for debugger? n
launch=<command line> run debugger on event none
onthrow=<exception name> debug on throw none
onuncaught=y|n debug on any uncaught? n
timeout=<timeout value> for listen/attach in milliseconds n
mutf8=y|n output modified utf-8 n
quiet=y|n
运行 java -agentlib:hprof=help, 内容比较多就不贴了。是一个CPU和内存的分析工具。
相关文章推荐
- Java链表的简单实现
- Eclipse 的单步调试
- Java分布式通信之RMI
- Spring学习笔记--导航
- java.lang.ClassCastException: java.lang.Character cannot be cast to java.lang.String|<s:property val
- java 实现Excel数据导入数据库时,中文乱码问题
- SpringMVC+jade实现高性能模板引擎(简单配置)
- java中命令模式
- 深入浅出学Spring Data JPA
- Java 8怎么了:局部套用vs闭包
- Java 8怎么了:局部套用vs闭包
- cxf3.x +spring 3.x(4.x)+ maven 发布webservice 服务
- spring4.2完整web项目(使用html视图解析器)
- JAVA调用R语言
- eclipse插件jd-eclipse的使用
- Java基础知识IO流(异常的日志信息&系统信息)
- java 获取某一个包下的所有class 包括jar包中的文件
- java的学习要按照规律来学!
- JAVA集合框架之List、Map、Set之间的选择~小案例分析
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)