java jpda远程调试

Java Platform Debugger Architecture(JPDA:Java平台调试架构) 由Java虚拟机后端和调试平台前端组成

tomcat可以通过jpda进行远程调试。可以修改startup.bat(linux下是startup.sh)或者是改catalia.bat
( linux下是catalia.sh) 来实现;

不改文件进行远程调试,可以通过命令"catalia.bat jpda start",用调试状态启动tomcat,
linux则是"./catalia.sh jpda start"。看catalia.bat 和 catalia.sh的区别,大致相同jpda参数是 

JPDA_TRANSPORT  (Optional) JPDA transport used when the "jpda start" 
                command is executed. The default is "dt_socket". 

JPDA_ADDRESS    (Optional) Java runtime options used when the "jpda start" 
                command is executed. The default is 8000. 

JPDA_SUSPEND    (Optional) Java runtime options used when the "jpda start" 
                command is executed. Specifies whether JVM should suspend 
                execution immediately after startup. Default is "n". 

这里默认的jpda端口号为8000

D:\csp-tomcat-6.0.35\bin>catalina.bat /?

Using CATALINA_BASE:   "D:\csp-tomcat-6.0.35"
Using CATALINA_HOME:   "D:\csp-tomcat-6.0.35"
Using CATALINA_TMPDIR: "D:\csp-tomcat-6.0.35\temp"
Using JRE_HOME:        ""
Using CLASSPATH:       "D:\csp-tomcat-6.0.35\bin\bootstrap.jar"
Usage:  catalina ( commands ... )
commands:
  debug             Start Catalina in a debugger
  debug -security   Debug Catalina with a security manager
  jpda start        Start Catalina under JPDA debugger
  run               Start Catalina in the current window
  run -security     Start in the current window with security manager
  start             Start Catalina in a separate window
  start -security   Start in a separate window with security manager
  stop              Stop Catalina
  version           What version of tomcat are you running?

很显然,这里的启动参数都说明了,一种启动方式:
                               |
catalina.bat jpda start     <--|

1) 找到eclipse --> open debug dialog -->remote java application
2) 如果在要调试的代码前打了断点,双击remote java application时候会自动关联project
3) 如果没有自动关联,双击new一个
4) project,待调试的工程,connection type --> standard socket attach
5) connection properties: host:远程服务器的IP,port为catalina中配置的,
   如果是catalina.bat jpda start这个port会在控制台显示出来的;
   
if not ""%1"" == ""jpda"" goto noJpda
set JPDA=jpda
if not "%JPDA_TRANSPORT%" == "" goto gotJpdaTransport
set JPDA_TRANSPORT=dt_socket
:gotJpdaTransport
if not "%JPDA_ADDRESS%" == "" goto gotJpdaAddress
set JPDA_ADDRESS=8000

有时候,要认真观察下下列参数的配置,出错大致是这里的参数有问题:

set _RUNJAVA="%JRE_HOME%\bin\java"
set _RUNJDB="%JAVA_HOME%\bin\jdb"

rem set #JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xnoagent 
    -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=3999
    
rem set JAVA_OPTS=%JAVA_OPTS% -Dcom.sun.management.jmxremote.port=52588 
    -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
    
如果要远程调试,jar包的内容,要用到反编译工具,将反编译过来的代码丢在eclipse相同的目录下
不要动里面的代码,否则调试的时候代码的行数容易对不上,
[反编译后的代码行数和源文件的行数这是一个值得关注的问题]

 BCompare对比工具 带扩展对比扩展工具:WindowsFormats.bcpkg,这个可以下载一个,直接在工具中看反编译后的的结果
 1) tool --> import beyond compare settings -->select import file:
 2) java class to source(V)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用IDEA进行远程调试时,需要确保远程服务器的代码支持远程调试。为了实现这一点,需要在启动时加上特定的JVM参数。这些参数包括:-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port}。其中,${debug_port}是调试端口号,可以根据需要进行配置。\[1\] 然而,有时候在使用公司内部的自动化部署平台NDP进行应用部署时,可能会遇到一些问题。该平台声称支持远程调试,只需要在配置页面中设置调试端口号,并重新发布应用即可。但实际上,我在使用NDP时遇到了一个问题。在NDP发布的应用的JVM参数列表中,与远程调试相关的参数是:-Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=127.0.0.1:5555。这导致我无法通过5555端口连接到远程调试。\[2\] 需要注意的是,在JVM架构中,调试功能本身并不存在于JVM内部,而是通过外部工具实现的。这些调试工具可以在JVM本地或远程运行。这种设计方式实现了解耦和模块化的架构。\[3\] 综上所述,如果你想在IDEA中进行远程调试,你需要确保远程服务器的代码支持远程调试,并在启动时加上特定的JVM参数。同时,需要注意NDP平台可能存在的配置问题。 #### 引用[.reference_title] - *1* *2* [使用Intellij IDEA远程debug服务器Java代码](https://blog.csdn.net/lovedingd/article/details/126413664)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [使用Idea进行java应用的远程调试(Remote debugging)](https://blog.csdn.net/baidu_41632451/article/details/99467731)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值