目录 

一、Debug模式下,在不重启的前提下使代码生效

二、进阶设置

 三、局限

四、通过idea恢复过去版本的代码

五、远程调试

1、RemoteDebug(远程调试)

2、远程JVM参数设置

3、debug条件过滤

4、获取ip和port


  一、Debug模式下,在不重启的前提下使代码生效

1、首先将Reload classes after compilation 模式设置为 Always。

java 控制台不打印debug日志 java设置日志的debug模式_java 控制台不打印debug日志

  2、通过debug启动项目后,当修改了代码后,依次点击Run--》Debugging actions--》Reload Changed Classes,即可在不重启的情况下使代码生效,提升开发效率。

java 控制台不打印debug日志 java设置日志的debug模式_java 控制台不打印debug日志_02

 最后会提示有几个类被重新加载了,如果只有0个类,说明你改动的地方并没有影响到程序的运行。

二、进阶设置

为 Reload Changed Classes 设置一个快捷键

步骤如下

java 控制台不打印debug日志 java设置日志的debug模式_java_03

java 控制台不打印debug日志 java设置日志的debug模式_JVM_04

 三、局限

  • 只能修改已有方法的方法体
  • 不能添加新成员/删除已有成员/修改已有成员的签名(signature)

四、通过idea恢复过去版本的代码

VCS ==》Local History ==》Show History ==》revert,适合于恢复没有成功commit的代码

java 控制台不打印debug日志 java设置日志的debug模式_java 控制台不打印debug日志_05

五、远程调试

1、RemoteDebug(远程调试)

远程调试,就是我们把打包后的代码部署到服务器上之后,使用本地开发环境连接到服务器部署环境,以这样的方式调试。

2、远程JVM参数设置

RemoteDebug过程是在两个不同的VM实例间进行,需要一个通信方式——socket,因此需要端口设置。

要让远程服务器运行的代码支持远程调试,则启动的时候必须加上特定的JVM参数

  -Xdebug -Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=${debug_port} ,其中${debug_port}是用户自定义的,为服务端debug端口。

ones-service中端口号8080,具体设置在启动脚本ones-service/deploy/run.sh中,

JVM_ARGS

Java

JVM_ARGS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8418,suspend=n "

参数说明:

-XDebug 启用调试
-Xrunjdwp 加载JDWP的JPDA参考执行实例。
transport  用于在调试程序和 VM 使用的进程之间通讯。
dt_socket 套接字传输。
server=y/n VM是否需要作为调试服务器执行。
address=8080调试服务器监听的端口号。
suspend=y/n 是否在调试客户端建立连接之后启动 VM 。

3、debug条件过滤

在断点处,右键(两指),在条件框中输入匹配条件

适用场景举例:1)想打断点但怕影响其他人使用,条件可以输入匹配自己测试的userId;2)循环次数太多,只想断某一次循环内处理逻辑,其他循环都不断,例如在线活动list循环,条件可以输入活动ID

注意:如果条件不满足,则断点不生效;尽量在请求进入服务前设置好条件,临时设置有时不生效

4、获取ip和port

命令:ps -ef | grep java

java 控制台不打印debug日志 java设置日志的debug模式_java_06