当前位置:网站首页>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来进行调试。
边栏推荐
猜你喜欢

The use of a semaphore/interprocess communication 】 【 Shared memory

How to tick the word box?

Apache ShardingSphere 5.1.1 正式发布

smart_rtmpd 的 VOD 接口使用说明

Apache ShardingSphere 5.1.2 发布|全新驱动 API + 云原生部署,打造高性能数据网关...

虚拟机使用的是此版本 VMware Workstation 不支持的硬件版本。模块“Upgrade”启动失败。未能启动虚拟机。

打包项目上传到PyPI

webrtc 有关 SDP 部分的解析流程分析

webrtc 数据接收流程图解

smart_rtmpd 的 NAT 映射方式使用说明
随机推荐
代码细节带来的极致体验,ShardingSphere 5.1.0 性能提升密钥
【进程间通信】信号量的使用/共享内存
Mysql-Explain与索引详解
我的2021回忆录
smart_rtmpd 的 VOD 接口使用说明
Google AdSense注册流程
内存和硬盘、磁盘的区别
mongodb连接本地服务失败的问题
类模板/赋值运算和加等运算
Mysql索引优化一
Mysql理解MVCC与BufferPool缓存机制
Linux下mysql的彻底卸载
计算机网络中的安全(一)网络安全的概念与加密原理
一线大厂研发流程(转载自鱼皮)
网络运维系列:远程服务器登录、配置与管理
【进程间通信】:管道通信/有名/无名
【软件测试】性能测试理论
【软件测试】用例篇
【个人向】线性表复习
Template series-union set