244 java debugging remote-debugging
我有一个在linux机器上运行的java应用程序.我使用以下代码运行java应用程序:
java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n
Run Code Online (Sandbox Code Playgroud)
我在这台Linux机器上为TCP打开了端口4000.我在Windows XP机器上使用eclipse并尝试连接到此应用程序.我也在windows中打开了端口.
两台机器都在局域网上,但我似乎无法将调试器连接到Java应用程序.我究竟做错了什么?
Chr*_*ung 462
编辑:我注意到有些人在这里剪切和粘贴调用.我最初给出的答案仅与OP相关.这是一种更现代的调用方式(包括使用更传统的8000端口):
java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>
Run Code Online (Sandbox Code Playgroud)
原始答案如下.
试试这个:
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp
Run Code Online (Sandbox Code Playgroud)
这里有两点:
runjdwp选项中没有空格.Sai*_*ish 80
对于JDK 1.3或更早版本:
-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006
Run Code Online (Sandbox Code Playgroud)
对于JDK 1.4
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006
Run Code Online (Sandbox Code Playgroud)
对于较新的JDK:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6006
Run Code Online (Sandbox Code Playgroud)
请根据您的需要更改端口号.
来自java技术说明
从5.0开始,-agentlib:jdwp选项用于加载和指定JDWP代理的选项.对于5.0之前的版本,使用-Xdebug和-Xrunjdwp选项(5.0实现还支持-Xdebug和-Xrunjdwp选项,但更新的-agentlib:jdwp选项更可取,因为5.0中的JDWP代理使用JVM TI接口VM而不是旧的JVMDI接口)
还有一点需要注意,来自JVM Tool界面文档:
JVM TI是在JDK 5.0中引入的.JVM TI取代了Java虚拟机概要分析程序接口(JVMPI)和Java虚拟机调试接口(JVMDI),从JDK 6开始,不再提供这些接口.
小智 28
脚步:
有关完整详细信息,请参阅Java远程调试的分步指南.
MrB*_*ack 12
我想强调的是,论证的顺序很重要。
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -jar app.jar命令打开调试器端口,
但java -jar app.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000命令没有。它会将app.jar之后的所有内容作为命令行参数传递。
Answer covering Java >= 9:
For Java 9+, the JVM option needs a slight change by prefixing the address with the IP address of the machine hosting the JVM, or just *:
-agentlib:jdwp=transport=dt_socket,server=y,address=*:8000,suspend=n
Run Code Online (Sandbox Code Playgroud)
This is due to a change noted in https://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435.
For Java < 9, the port number is enough to connect.
| 归档时间: |
|
| 查看次数: |
382001 次 |
| 最近记录: |