tomcat远程调试_使用JDWP实现对Java程序的远程调试

本文介绍了如何利用JDWP(Java Debug Wire Protocol)进行远程调试Java程序,特别是针对Tomcat应用。通过在目标Java程序中添加特定的JVM参数以开启JDWP监听,然后使用IDEA或Eclipse配置远程调试器连接到该端口,从而实现远程调试。在IDEA中设置远程调试配置后,连接成功,即可在本地为远程程序设置断点进行调试。
摘要由CSDN通过智能技术生成

9fa7265fb0d9977b9f40217130c92837.png

本文由圣思园会员投稿。

前言

线上服务器出现的bug,因为各种复杂环境的原因,经常会很难在本地调试,只能到处打log减少重启次数。一直有听说有远程调试这玩意,因为使用场景不多+懒惰一直没去调研,最近终于在一门课程上面揭开了远程调用的面纱,记录一下。

简介

JDWP(Java Debug Wire Protocol)我倾向于翻译为java调试传输协议,即调试器与目标java程序之间的传输协议。JVM自带有对这个协议相应的支持,通过下面的命令可以查看help文档。

/Users/user$  java -agentlib:jdwp=help
Java Debugger JDWP Agent Library
--------------------------------

(see http://java.sun.com/products/jpda for more information)

jdwp usage: java -agentlib:jdwp=[help]|[=, ...]

Option Name and Value Description Default
--------------------- ----------- -------
suspend=y|n wait on startup? y
transport= transport spec none
address= transport spec ""
server=y|n listen for debugger? n
launch= run debugger on event none
onthrow= debug on throw none
onuncaught=y|n debug on any uncaught? n
timeout= for listen/attach in milliseconds n
mutf8=y|n output modified utf-8 n
quiet=y|n control over terminal messages n

Obsolete Options
----------------
strict=y|n
stdalloc=y|n

Examples
--------
- Using sockets connect to a debugger at a specific address:
java -agentlib:jdwp=transport=dt_socket,address=localhost:8000 ...
- Using sockets listen for a debugger to attach:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y ...

Notes
-----
- A timeout value of 0 (the default) is no timeout.

Warnings
--------
- The older -Xrunjdwp interface can still be used, but will be removed in
a future release, for example:
java -Xdebug -Xrunjdwp:[help]|[=, ...]

接下来讲下具体怎么使用。

目标Java程序开启jdwp的监听

增加jvm参数,然后重启java进程

-agentlib:jdwp=transport=dt_socket,server=y,address=8000

即使用socket模式在8000端口监听等待jdwp的客户端,这个客户端就是后文的调试器。

重启之后程序会卡在那里等待有调试器连接之后才会继续启动程序。

  • PS:jvm参数在spring boot项目和tomcat项目怎么加自行google,此处不累赘。

  • PPS:服务器端口开放就不用说了,确定能telnet通再继续下一步吧。

使用IDEA作为调试器(eclipse操作几乎一样)

c8961e0fb78b9ee3e0dbaf1aa5abf550.png

点击运行设置下拉选项

caba61bcf27436b3199fc35dbd8cf136.png

点击Edit Configurations...

e02be3e183746db88a67ae3aa66fb9d3.png

弹出窗口中点击左上角的+号,然后选择Remote

ef3c3f7e4fdccd9d02ac36c989ee7fd2.png

设置调试器连接目标程序

0c52e387634860cafb33b4cd396587b9.png

保存设置之后,点击Debug

连接成功以后,目标程序就会继续启动,然后你就可以在IDE上面给远程对程序打断点了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值