如何使用 Idea 远程调试 Java 代码
起因
这几天,我做的项目中需要使用第三方的 API,在第三方的 API 回调时,出现各种错误,需要远程调试。之前做远程调试的时候,我只会在代码中输出日志,记录下来做分析处理,但这样做既麻烦又费时,往往还不能准确定位问题,恶心至极。之前做 .NET 开发时用过 Remote Debug 这个功能,想想 Idea 这么牛逼,是不是也有这个功能,上网一查,还真有,共享出来,与诸君共勉。
服务端配置
首先,我们要让要让远程服务器支持远程调试功能,在项目启动项上追加特定的 JVM 参数即可,参数如下:
- 晚于 JDK 1.4.X 版本
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=4001
- JDK 1.4.X 版本
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001
- JDK 1.3.X 或早起版本
-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=4001
大家根据不同的 JDK 版本使用不同的启动参数即可。本人使用的是 Tomcat 7 + Java 7 ,在 catalina.bat(linux 环境设置 catalina.sh)中设置 JAVA_OPTS 节点即可,“address=4001” 中的 “4001”为调试端口,大家可以根据需求自行设置(友情提示:不要占用网站的端口,有可能会导致项目启动报错)。
IDE 配置
然后,配置一下客户端就可以啦,Idea 的客户端配置非常简单在如下图所示的位置:

点击 Edit Configurations,即可进入 Run/Debug Configurations 界面:

点击左上角的“+”标识,可以在下拉框中发现“Remote”选项,选择确定后,出现右侧区域,首先在HOST(标注2)框中配置需要调试的远程服务器地址,然后在调试端口狂(标注3)中调试端口号(这里的端口号和服务器端的端口号保持一致,本示例中是“4001”),点击 OK 即可。
调试步骤
最后,进入调试流程,整个项目的调试也非常简单,点击下图中的 debug 按钮,当 console 窗口中打印出 “Connected to the target VM, address: 127.0.0.1:4001', transport: 'socket'”即表示链接成功:

当然啦,也会有不顺利的情况出现,如:
- 服务器端口限制,比如服务器屏蔽了“4001”端口,会导致远程调试失败;
- 本地代码和远程代码不一致,也会导致远程代码调试失败;
启动成功后,你就可以像调试本地代码一样 Happy 的调试远程代码了。
如何使用 Idea 远程调试 Java 代码的更多相关文章
- Eclipse远程调试Java代码的三种方法
Eclipse远程调试Java代码的三种方法, 第1种方法是用来调试已经启动的Java程序,Eclipse可以随时连接到远程Java程序进行调试, 第2种方法可以调试Java程序启动过程,但是Ecli ...
- 【Java】使用IDE开发工具远程调试Java代码
概述 服务端程序运行在一台远程服务器上,我们可以在本地服务端的代码(前提是本地的代码必须和远程服务器运行的代码一致)中设置断点,每当有请求到远程服务器时时能够在本地知道远程服务端的此时的内部状态 测试 ...
- 远程debug调试java代码
远程debug调试java代码 日常环境和预发环境遇到问题时,可以用远程调试的方法本地打断点,在本地调试.生产环境由于网络隔离和系统稳定性考虑,不能进行远程代码调试. 整体过程是通过修改远程服务JAV ...
- Eclipse快速入门:远程调试Java应用
Eclipse快速入门:远程调试Java应用 2012年03月27日00:00 it168网站原创 作者:皮丽华 编辑:皮丽华 我要评论(0) 标签: Eclipse , Java , Java框架, ...
- paip. java resin 远程 调试 java resin remote debug
paip. java resin 远程 调试 java resin remote debug 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 ...
- IDEA远程调试服务器代码
先在idea添加一个remote,host填服务器ip,port填监听服务器端口,默认5005 然后在服务器tomcat catalina.sh 添加(红色部分): JAVA_OPTS="$ ...
- 远程调试Java程序
java 可以以调试模式启动,启动后可以使用 jdb 对程序进行调试.以调试模式启动,需要加入以下参数: java -Xdebug -Xrunjdwp:transport=dt_socket,addr ...
- 使用 MyEclipse远程调试 Java 应用程序
远程调试,需要本程序和服务器上的程序源码是相同的,这我们服务器使用的是tomcat7.在本地通过MyEclipse 10来调试服务器上的代码,需要本地能访问到服务器,我的服务器是在linux下. 1. ...
- grails的controller和action那点事---远程调试groovy代码
最近由于项目需要,用到了grails,这玩意确实好用,生产率高有类型python的速度与简洁.仅第一印象,用的还不深入,说的不对请轻拍. 遇到的几个问题: 1. groovy远程调试 玩Java的应该 ...
随机推荐
- 常用生产环境的PHP安装参数
./configure --prefix=/usr/local/php5. --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/b ...
- 【HDOJ3047】Zjnu Stadium(带权并查集)
题意:浙江省第十二届大学生运动会在浙江师范大学举行,为此在浙师大建造了一座能容纳近万人的新体育场. 观众席每一行构成一个圆形,每个圆形由300个座位组成,对300个座位按照顺时针编号1到300,且可以 ...
- 修改mysql root用户密码(忘记密码)
vi /etc/my.cnf,在[mysqld]中添加 skip-grant-tables 例如: [mysqld] skip-grant-tables datadir=/var/lib/mysql ...
- Ubuntu 16.04设置rc.local开机启动命令/脚本的方法(通过update-rc.d管理Ubuntu开机启动程序/服务)
注意:rc.local脚本里面启动的用户默认为root权限. 一.rc.local脚本 rc.local脚本是一个Ubuntu开机后会自动执行的脚本,我们可以在该脚本内添加命令行指令.该脚本位于/et ...
- JSP的调试
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/debugging.html: 一.使用System.out.println() System.out.p ...
- list去掉重复元素
需求: 有list 里面含有重复元素,要求去掉重复元素: solution 1: >>> a [1, 2, 2, 1, 3, 4, 5, 6, 5] >>> set ...
- mysql利用timestamp来进行帖子排序
select * from table order by timestamp descorder by 该列 desc timestamp字段也可以用来排序,对应Java类型的.net.timesta ...
- linux内核CFS进程调度策略
一.概述 首先简介一下主要的设计思路, CFS思路非常easy.就是依据各个进程的权重分配执行时间(权重怎么来的后面再说). 进程的执行时间计算公式为: 分配给进程的执行时间 = 调度周期 * 进程权 ...
- 集成环信时遇到的问题file not found: libEaseMobClientSDK.a
集成环信时遇到的问题 build setting环信SDK集成libEaseMobClientSDKL file not found: libEaseMobClientSDK.a clang: er ...
- yarn-cli 显示文件目录
显示yarn bin文件夹的位置. yarn bin yarn bin将打印yarn将为您的软件包安装可执行文件的文件夹.一个可执行文件的例子可能是你已经为你的包定义的脚本,可以通过执行yarn ru ...