Java 调试技巧

作者:微信小助手

发布时间:2023-10-13T14:43:10

Java 调试技巧

1、IDEA 远程调试代码

在 idea 项目配置当中添加一个 Remote JVM debug,当然每个 idea 版本可能名称不一致,看准图标就行。

然后配置远程服务器的地址,复制 Command line argumengts for remote JVM 下面的命令行。

然后将项目打包,启动的时候添加上面复制的命令行。比如运行的命令是这样的:java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 test.jar

启动了远程项目,就可以本地运行调试配置了。建议不要直接调试线上项目,复制一个项目副本去调试,不然会阻塞所有线程,实在要调试的话可以配合条件调试加线程级的阻塞来测试。

2、jstack 调试

jstack 是 JVM 自带的 Java 堆栈跟踪工具,用于生成 Java 虚拟机当前时刻的线程快照。线程快照是当前 Java 虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。

语法

 
  1. Usage:

  2. jstack [-l] <pid>

  3. 连接正常运行的进程

  4. (to connect to running process)

  5. jstack -F [-m] [-l] <pid>

  6. 连接挂起的进程

  7. (to connect to a hung process)

  8. jstack [-m] [-l] <executable> <core>

  9. (to connect to a core file)

  10. jstack [-m] [-l] [server_id@]<remote server IP or hostname>

  11. 连接远程服务器

  12. (to connect to a remote debug server)