IDEA 远程调试 Tomcat 和 Debugger

时间:2023-03-10 05:23:56
IDEA 远程调试 Tomcat 和 Debugger

一般来说我们本地环境使用Tomcat,生产环境使用GlassFish。

准备工作

  • 明确远程服务器的 IP 地址,比如:192.168.92.128
  • 关掉服务器防火墙:service iptables stop

IDEA 远程调试 Tomcat 和 Debugger

【commandline arguments】agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

  • Linux(有单引号):export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
  • Windows(没有单引号):set JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

【配置远程的Tomcat】服务器以 Linux 环境为例

  • Tomcat 安装在 /usr/program/tomcat7
  • Tomcat 的执行程序:/usr/program/tomcat7/bin/catalina.sh
  • 编辑 Tomcat 执行程序:vim /usr/program/tomcat7/bin/catalina.sh(Windows 是编辑:catalina.bat)
    • 在该文件的最上面,添加我们刚刚复制的那句话:export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'

IDEA 远程调试 Tomcat 和 Debugger

【配置】服务器 Jetty 配置

  • 同样是 Linux 环境
  • jetty 不像Tomcat那样需要安装,只要有jetty的jar包就可以启动我们想要启动的应用。
  • 在启动应用的时候加入之前上边我们copy的-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005就可以了。
    • 就像这样:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar {your jetty path} {your port} --path {your war} 1>/dev/null 2>&1 &

【DEBUG部分】从左到右

IDEA 远程调试 Tomcat 和 Debugger

一、快捷键F8  【STEP OVER】越过方法进入下一步

二、快捷键F7  【STEP INTO】 进入方法体内下一步

    三、Alt + Shift + F7 【Force STEP INTO】强制进入方法体 ,一层层剥开它的皮...

    Shift + F7 【SMART STEP INTO】断点所在行上有多个方法调用,会弹出进入哪个方法

快捷键F9  【Resume Program】恢复程序运行,但是如果该断点下面代码还有断点则停在下一个断点上       可能我们就是想要到下一个断点。

    四、Shift + F8【STEP OUT】跳出,继续下一个断点,和Resume Program效果相同。

五、【DROP FRAM 月光宝盒】回到当前停住的断点的上一层方法上,可以让过掉的断点重新来过

    【一览纵山小】DROP FRAM   我们进入了方法体内,想跑出方法体外。

【酷炫调试】

【拉起一个对象扔到Watch】鼠标悬停在对象上 2 秒左右就可以。

【比如我们想看一个对象的String类型,或者经过 求值 】拿起变量就是用。Alt + F8 【Evaluate Expression】选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果

【F9 ResumeProgram跨越长城】当我们需要过掉后面的所有断点的时候,不需要去掉这些断点,

只需要点击左下角IDEA 远程调试 Tomcat 和 Debugger断点变成灰色,然后我们再在按快捷键 F9 即可过掉当前和后面所有的断点。

【条件断点】Ctrl + Shift + F8 【view breakpoints】查看所有断点,指定断点进入条件

【下一站怎么才能遇见】【指定条件下 才进入断点】没达到条件就跳过了

  【让子弹再飞一会】Pass count 表示跳过多少次后开始步入断点 ,使用场景:for循环个几遍,我再看结果。

   【临时断点 一次性断点】勾选Remove Once hit

   【You jump I jump】直到某个断点进入后  才Enabled 。。。Disable Until Selected BreakPoint