前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >远程调试,你值得拥有

远程调试,你值得拥有

作者头像
用户1615728
发布2019-04-01 11:15:02
7750
发布2019-04-01 11:15:02
举报
文章被收录于专栏:陈本布衣陈本布衣

1. 简单理解

  远程调试就是用本地的代码调试服务器上的代码,稍微想想怎么能做到呢,肯定是本地和远程服务上的虚拟机之间实现了相互通讯啊.。术语话一点,就是本地和远程的JVM之间基于某种协议(debug协议)以套接字(socket) 的方式实现通信,从而实现在本地远程调试服务端代码的功能。既然是以套接字的方式,那可定就有服务端和客户端的概念。这里不要思维定势了,所谓服务端和客户端是相对的,并不是说你部署服务的远程端才叫服务端,实际上,只要你喜欢,你可以将本地IDE配置成服务端,让远程服务启动后来主动连接本地,当然,通常的方式还是顺势思维,就把远程配置为socket的服务端,监听客户端;而且连接的建立都是服务端先启动后监听特定端口,等待客户端连接。

3. 命令环境

  在运行java -jar命令来启动的项目如内嵌服务器(如Jetty)或者只是简单的运行 main 方法的场景下,想要远程调试,也很简单,就是在启动时添加远程调试相应的参数,下面为博主测试jar包环境下配置参数,完全可以拿去即用的——    

代码语言:javascript
复制
java -Xdebug -Xrunjdwp:transport=dt_socket,server=n,address=9999,suspend=n -jar debug.jar

  参数释疑:

    -XDebug                 启用调试模式;     -Xrunjdwp               加载JDWP的JPDA参考执行实例;     transport                 用于在调试程序和 JVM 使用的进程之间通讯;     dt_socket                以套接字方式传输;     server=y/n              是否支持在server模式的虚拟机中(java -version可以查看到虚拟机默认运行模式,但布衣博主发现没有此参数也不影响调试,此条存疑);     address=9999        调试服务端监听的端口号,如果是作为调试客户端,需要加上IP地址,形如: java -Xdebug -Xrunjdwp:transport=dt_socket,address=192.168.1.100:9999,suspend=n -jar debug.jar     suspend=y/n          是否在调试客户端建立连接之后启动 JVM,设置为y程序启动会阻塞,直到客户端建立连接程序才会正式启动,为 n 程序直接启动

  本地 Idea配置和服务启动如下图:

  本地和远程服务建立调试连接后,如果代码中打有断点,在本地浏览器中访问服务器地址,就可以愉快的在本地查看服务器端代码的运行情况了——

注意:调试过程一定保证本地代码和服务代码的一致性,否则本地看到的运行轨迹会让你莫名其妙。

  附:eclipse中通过 run -> Debug Configurations -> Remote Java Application同样的配置即可。

3.容器环境

  这里还要说更常用以Tomcat作为服务器运行项目的情景,有些教程说要在启动脚本如startup.sh或catalina.sh 中配置调试参数等等,其实不用的,真的不用的,因为我们的 Tom 猫已经把调试参数配置好了的,在它的启动脚本catalina.sh(startup.sh最终也是调用该启动脚本)中你可以看到如下脚本代码:  

  所以,开启远程调试就很简单了,直接 运行  ./catalina.sh jpda start  启动,默认监听 8000 端口即可开启远程,你可以通过  lsof -i:8000  或  netstat -lnp | grep 8000 等查看端口占用情况,也可以在Tomcat的启动日志中查看监听的端口。

   启动后,IDE端的配置就和博文上面演示的是一样的了,自己愉快的玩耍吧。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简单理解
  • 3. 命令环境
  • 3.容器环境
相关产品与服务
远程调试
远程调试(Remote Debugging,RD)在云端为用户提供上千台真实手机/定制机/模拟器设备,快速实现随时随地测试。运用云测技术对测试方式、操作体验进行了优化,具备多样性的测试能力,包括随时截图和记录调试日志,稳定的支持自动化测试, 设备灵活调度,用例高效执行, 快速定位产品功能和兼容性问题。云手机帮助应用、移动游戏快速发现和解决问题,节省百万硬件费用,加速敏捷研发流程。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档