Java开发中,总是会碰到各种各样奇葩的问题,有时候明明在本地完美执行,可是一放到服务器上就各种崩溃,搞得人一头雾水,调试的时候也非常艰难。对于开发人员来说,复现问题通常是解决问题的前提,本地可以复现,解决起来相对会顺利一些。
idea集成的remote远程调试功能,可以完美的解决远端调试的困境,至少在一定程度上,使得复现问题变得有据可循。以下便是Linux+idea+tomcat的remote配置。
一、修改bin目录下catalina.sh文件。
查找JPDA_ADDRESS变量,找到位置
if [ -z "$JPDA_ADDRESS" ]; then JPDA_ADDRESS="localhost:8000"
修改localhost为0.0.0.0:5005,8000端口可不变,0.0.0.0为可支持远程调试
if [ -z "$JPDA_ADDRESS" ]; then JPDA_ADDRESS="0.0.0.0:5050"
二、启动tomcat调试服务,在bin目录下执行
./catalina.sh jpda start
此时,服务端配置已完成,接下来配置idea的remote服务。
一、打开edit Configurations配置项,添加一个template,配置Remote JVM Debug如图
二、使用所配置的template配置服务,如图
三、启动成功后会在Console窗口打印Connected to the target VM ...
到此所有服务都配置完成,你就可以在本地断点调试服务器上的程序了。
【配置过程中你可能碰到的问题集锦】
一、java.lang.OutOfMemoryError: Java heap space。这个问题不一定在你配置此服务时出现,问题原因也有很多,其中有一点是因为内存泄漏导致,在idea中我们可以通过配置VM option为-XX:PermSize=512M -XX:MaxPermSize=1024m完美解决。在Linux的tomcat可通过添加相同配置解决,在catalina.sh文件中的第一行添加
JAVA_OPTS='-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M'
二、查看端口是否开启
netstat -an | grep 5005
三、配置过程中你可能会碰到端口5005未开启的问题。
vim /etc/sysconfig/iptables #打开配置端口号文件
添加
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5005 -j ACCEPT
重启iptables生效
systemctl restart iptables
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2019-04-25 文档加密、解密jar包