当前位置:网站首页>IDEA如何进行远程Debug
IDEA如何进行远程Debug
2022-08-02 14:16:00 【蒲春伟】
1. 问题背景
项目的部署方式有主要有两种,第一种是以本地SpringBoot直接启动或是非SpringBoot的应用在本地应用服务器进行部署;第二种则是将项目在远程服务器部署。一般本地直接启动的项目可以直接进行DEBUG调试,但是在企业内部或是多人协同的时一般是将项目部署在独立的一台测试服务器上,针对这种情况该如何DEBUG调试的我们的业务代码呢,下面是具体的操作流程。
2. 远程调试端口开启
应用或是系统在远程服务器上一般是通过命令行或是Shell脚本完成应用的启动/关闭,关于启动的参数配置一般是附属在Shell脚本或是JAVA启动命令中来进行配置,比如JVM内存大小java -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=512m,除此之外我们还可以指定调试相关的配置参数:
将配置项中的-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 添加到JAVA启用参数中,然后重启远程服务器
3. Remote Debug配置
- 为了方便调试,首先需要把远程服务器上面需要调试的代码放在本地IDE里面
- 在菜单栏选择Run ->Edit Configuration,点击+号,选择Remote JVM Debug,然后在配置项里面输入远程需要调试机器的IP地址和所对应的端口号,最后可以自定义应用名称


- 再次选择菜单条run按钮,找到debug中“自己设置的项目名字”,点击然后就可以进行远程连接开启Debug调试了
- 在本地项目中代码中设置断点,然后就可以在本地debug调试了
4. 总结
无论Remote Debug还是本地IDEA Debug模式其本质就是通过在启用应用时添加参数,底层原理均是基于JVM底层提供的调试能力,然后通过启动参数来确定是否开启Debug端口,唯一的区别是在于IDEA是在集成开发软件中自动来完成调试模式的开启,而自己开启则需要在应用中添加对应的参数来控制Debug功能的开启。 除此之外断点调试的功能也是基于JVM底层已有的能力,只不过是IDEA提供了可视化的工具然开发能够更便捷的Debug。如果不用IDEA或其他开发工具的情况下我们又该如何进行Debug呢? 其实也是可以的,只需要基于JDB本身通过命令行来打断点和调试即可,感兴趣的可以进一步了解下如何通过命令行基于JDB模式来进行Debug调试。为什么需要具备这种能力呢? 因为大企业内部的线上的服务器的网络和办公网络是隔离的,中间经过一层跳板机,直接远程调试是不通的(除非是通过跳板机做端口映射转发),这时候便可以直接在机器上基于JDB来进行调试。
边栏推荐
猜你喜欢
随机推荐
PostgreSQL 协议数据样例
The dynamic planning theory
【线程】 理解线程(并行)线程同步的处理(信号量,互斥锁,读写锁,条件变量)
mininet hosts talk to real internet
Oauth2.0 custom response values and exception handling
Feign Client 超时时间配置不生效
Mysql索引优化二
The use of a semaphore/interprocess communication 】 【 Shared memory
How to tick the word box?
Cmd Markdown Formula Guidebook
Oauth2.0 authentication server adds verification code login method
OpenPose 基本理念
[Inter-process communication]: pipe communication/named/unnamed
【solidity智能合约基础】节约gas的利器--view和pure
Oauth2.0 自定义响应值以及异常处理
CDN的加速原理是什么?
"Array" look-up table method (leap year)
【线程安全】用户级,内核级,组合级线程|线程同步的处理(条件变量)|strtok_r(可冲入函数)
Template Series - Dichotomous
char array/string array|array pointer/pointer array/









