GirlsBoy
回首向来萧瑟处,归去,也无风雨也无晴。
posts - 36,comments - 1,views - 12万

  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
posted on   GirlsBoy  阅读(693)  评论(0编辑  收藏  举报
编辑推荐:
· 从 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包
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

java\web应用开发&研究

梦想程序改变生活

成为一个了不起的人

点击右上角即可分享
微信分享提示