如题哦,项目发布到服务器上后,每天被不同的bug所困扰。强大的idea超出你的想象,强大到可以远程debugger,就和在本地一样一样的。进入正题...
前提概要
线上即服务器代码必须与本地一致,否则会引起误导。
1.启动配置
nohup java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 xxx.jar >/dev/null 2>&1 &
正常启动是
nohup java -jar xxx.jar >/dev/null 2>&1 &
只需中间加入-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 该参只是本地映射项目端口,与实际访问端口不发生冲突。建议不同,相同的端口号还不知道有什么坑。
参数含义说明
-agentlib:来自于java 详解 控制台打印java 输出
jdwp:java debug wire protocol 简写 意思是通知JVM使用来运行调试环境
transport=dt_socket:采用通信方式为 socket.(另一种方式为shmem 是指内存共享模式 不知道怎么用呢....)
server=y:上图可知含义为 是否监听debugger 我们当然选择yes
suspend=n:是否等待启动 选择no
address=5005 :线上与本地映射的端口
2.idea设置
(1)编辑
(2)创建debugger
(3)设置
module也要选上
(4)idea启动
启动效果
(5)愉快的解决问题吧
知其然必其知所以然
你品 你品 你细品
其实就是通过jvm的socket通信将线上与本地连接在一起,本地通过监听配置的端口上从而实现本地debugger.
大佬勿喷,结束。