众所周知使用IDEA开发时可以通过debug进行调试并快速定位问题,但是如果代码已发布到远程服务器上,该如何调试呢?本文将告诉你如何利用IDEA调试远程服务器上的代码

本文会先讲如何配置参数、调试,然后讲各项参数的含义,最后讲注意事项。各位在尝试过程中不需要担心这个没看懂,那个是为什么,只需要跟着做就行了。假如看完整篇文章后还有疑问,可以在留言区提问

配置本地参数

打开IDEA的 “Run/Debug Configurations” 选项,配置远程服务器的IP和端口,如下

红框中的内容暂时不用管,下一步才会用到

在绿框中的第一个输入框中输入远程服务器的ip,第二个输入框中输入远程服务器的端口

配置远程服务器参数

登录远程服务器,打开tomcat的bin文件夹下catalina.sh的文件进行编辑,加入如下配置

export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8185'

以上配置的等号后面的参数来自于第一步红框中的内容。

大多数情况下,使用红框中的第一个输入框的内容作为参数

如果远程服务器上的jdk是1.4版本的,则使用红框中的第二个输入框的内容作为参数

如果远程服务器上的jdk是1.3版本的,则使用红框中的第三个输入框的内容作为参数

调 试

启动第一步配置好的IDEA服务,在要调试的代码上打上断点,当远程服务器上的程序被访问时就会进入到断点中,这时就可以愉快的调试了

启动IDEA服务点击如下按钮

IDEA启动成功后,控制台输出如下内容

参数解释

下图是第一步配置时的截图,我们来逐一解释以下各个参数的含义

先说绿框中的参数

Transport是IDEA和远程服务器的通讯方式,如果远程服务器是linux或macos则选择socket,如果远程服务器是windows则选择Shared memory

Debugger mode的可选项有Attach和Listen。Attach表示服务端启动后等待IDEA去连接;Listen表示IDEA监听服务端的端口,等服务端准备好时会建立连接,此种方式要求服务端能ping通本地电脑的ip。通常使用Attach模式

Host是远程服务器的ip,Port是远程服务器的端口

再说红框中的参数

红框中的参数不允许手动修改,它跟着绿框中参数的修改而发生变化。

-Xrunjdwp:通知JVM使用jdwp(java debug wire protocol)来运行服务器代码

transport的值可选dt_socket和dt_shmem,分别对应绿框中的Socket和Shared memory

address对应绿框中的Port,是远程服务器的端口

注意事项

1. 远程服务器上的端口必须没有被占用,并且可以被本地访问到,可以通过telnet测试,如:telnet 远程ip 远程端口

2. 远程服务器上部署的代码必须和本地的源代码保持一致,否则断点无法进入

3. 配置远程服务器时,如果JAVA_OPTS参数在catalina.sh中已经存在,则只需要把要配置的参数追加到后面就行

idea远程调试修改代码_使用IDEA远程调试线上代码相关推荐

  1. 在线执行代码,线上代码执行,支持 php go woo lua luajit python perl ruby

    在线执行代码,线上代码执行,支持 php go woo lua luajit python perl ruby 在线执行编辑器

  2. python下载图片代码_使用Python下载Bing图片(代码)

    直接上代码: # -*- coding: cp936 -*- import urllib import os print 'Download data......' url = 'http://cn. ...

  3. 微信推文图片间距有缝的代码_使用记录接缝进行旧代码单元测试

    微信推文图片间距有缝的代码 在大多数情况下,使用遗留代码可能很困难. 但是,当涉及到添加新功能,重构或维护您不熟悉的代码时,它可能会变得势不可挡. 如果您已经使用敏捷技术几年了,并且突然间您面对大量的 ...

  4. vc2010中开始执行不调试灰的_反编译动态调试smali全过程

    点击上方蓝字关注我,每天进步一点点 大家都知道我们在逆向分析的时候,很多时候主要在分析逻辑.网络抓包.数据来源流向分析.页面逻辑跳转分析.动态调试等.由于很多代码都会混淆,很多时候我们直接通过代码可能 ...

  5. opcclient远程连接opc服务器_软件 | 服务器远程连接软件MobaXterm

    今天和大家分享一款远程连接软件 -- MobaXterm在使用服务器时,我们大多都是通过远程连接软件进行的.使用远程连接软件可以实现文件在电脑和服务器之间互相传输.我们在服务器中对数据进行的一切操作, ...

  6. git 获取远程分支到本地_如何将git本地仓库上传到远程仓库?

    Step1:我们先到GitHub上创建一个仓库. Step2: 然后你就会跳转到下面的这个界面 Step3:我们先用VsCode打开你的本地仓库. 然后根据下图提示,新建一个终端. Step4: St ...

  7. 光流法测试代码_高效的企业测试-工作流和代码质量(4/6)

    光流法测试代码 本文的这一部分将讨论在开发过程中拥有有效工作流程的影响,以及适当的测试代码质量如何使我们能够创建可维护的测试,尤其是对于复杂项目. 开发工作流程和管道 编程是一项流程活动,我们开发人员 ...

  8. 给女朋友道歉的java代码_情人节写给女朋友Java Swing代码程序

    马上又要到情人节了,再不解风情的人也得向女友表示表示.作为一个程序员,示爱的时候自然也要用我们自己的方式. 这里给大家上传一段我在今年情人节的时候写给女朋友的一段简单的Java Swing代码,主要定 ...

  9. html中看到php代码_如何在HTML中嵌入PHP代码

    如何在HTML中嵌入PHP代码 对于一个有经验的 PHP Web 开发者,在HTML中嵌入PHP代码是一件非常容易的事情.但是对于刚开始接触 PHP 编程语言的新手这就是一个问题.下面是小编为大家带来 ...

最新文章

  1. (邓爱萍)类 对象 例题
  2. 使用java检测网络连接状况
  3. 如何分析案件的性质_律师如何综合分析一个案件
  4. 使用树莓派搭建WordPress个人博客
  5. ICCV 2017 PTAV:《Parallel Tracking and Verifying:A Framework for Real-Time and High Accuracy ...》论文笔记
  6. 解决Ubuntu“下载额外数据文件失败 ttf-mscorefonts-installer”的问题
  7. SQLServer2008内存飙升 解决
  8. centos7 安装java 8_CentOS 7.8下安装完美安装配置Rosetta
  9. shell 编程基础
  10. CentOS7.3上部署安装Oracle12c
  11. 我坚决不能容忍_出轨坚决不能忍,3星座女对出轨0容忍,敢出轨就等着吧
  12. 高可用Kubernetes集群原理介绍
  13. Hadoop设备实际上属于有待编排的超级计算机
  14. 寻找复活节彩蛋egg huting 学习
  15. mysql主从搭建_手把手教你搭建MySQL主从架构
  16. 计算机网各管理员技能鉴定,计算机网络管理员国家职业技能鉴定考核指导
  17. 正则表达式详解及示例
  18. JS中的单引号和双引号
  19. 2104.10729阅读笔记
  20. 如何实现自定义主题切换?

热门文章

  1. 高手是如何定位内存问题的代码位置的
  2. JDK7 源码学习系列——ThreadLocal
  3. WPF下可编辑Header的Tab控件实现
  4. 用投资的观点学习编程
  5. c#中的interface abstract 与 virtual(转)
  6. Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart
  7. python3 多进程 同步
  8. python 排序 自定义函数
  9. linux modprobe 内核模块加载卸载命令 简介
  10. Linux 软件看门狗 watchdog