前言

[IDEA 断点调试 debug 会用吗?#69_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1ur4y1P7SV/?spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=add54d0fcd49c96c6c124259f9775bc3)

断点的分类

> 行断点: >
  • 在某一行产生的断点,代码运行到该行停止

详细断点:

1.按住shfit+鼠标左键产生

2.

3.详细断点输出的值

方法断点

  • 在方法上打的断点
  • 会在方法的开始的第一行停止。
  • 在接口中的方法打方法断点: 在运行的时候会停止在该接口的具体类实现中。
  • 最后程序停留在其接口实现类中。

异常断点

  • 在一个启动程序中设置了异常代码,最后会停留在抛出异常的那一行代码处。

属性断点

追踪一个类或者对象属性变化的过程。

断点的使用:

断点条件

+ 给断点设置条件,只有当条件满足的时候,程序才再这里停下来;常用于循环,和多线程调试中

参看调试过程中变量的值

![](https://cdn.nlark.com/yuque/0/2024/png/28066124/1717480251020-89cd3eda-c6f9-440b-9c57-cd38a6939099.png)

动态修改变量的值

+ 这调试的时候,我们可以修改断点前面变量的值;从而让断点后面代码有使用到这个变量的时候用我们给这个变量设置的值。 + 当我们这调用接口,可能那个接口这本地是ip受限,这服务器上不是ip受限的。这个时候我们就可以在本地调试的时候将储存接口返回值的变量设置为服务器请求该接口返回的值。

改变值方法1:

方法2

光标停留这name处,按住alt键。

多线程的调试

[滑动验证页面](https://segmentfault.com/a/1190000042431321#item-6)
  • 多线程调试主要利用断点挂起线程来实现的。
  • 也可以在条件中设置为某某线程断点

流处理

  • 像上面的这里流链式编程可以使用追踪流发现数据的变化

远程Debug

+ 配置本地的run debug

进入编辑配置

选择远程jvm调试

配置远程debug

远程服务器以远程debug的形式启动

1
java -Xdebug -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar remoteDebug-0.0.1-SNAPSHOT.jar 

或者

1
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005

上面报找不到主清单:
解决方法
由于我使用的是Centos的虚拟机,默认情况下我们配置了Nat外界是无法访问虚拟机的。我们需要设置端口转发和关闭必要的防火墙

NAT模式主机访问虚拟机Linux上启动的spring boot项目 - 一佳一 - 博客园

本地打断点并调试

出现这种情况就表示已经连接到了远程服务器了。