idea debug断点调试

  1. debug模式基本界面
    在这里插入图片描述

  2. debug常用按钮介绍
    在这里插入图片描述
    1.如果你的光标在其它行或者其它页面,点击这个按钮可跳转到当前代码执行的行。
    2.一行一行的往下走,如果这一行上有方法不会进入方法。
    3.如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法。
    4.强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
    5.从步入的方法内退出到方法调用处,此时方法已经执行完毕,只是还没有完成赋值。
    6.断点回退,就是回退到上一个方法调用的开始处。
    7.运行到光标处,可以将光标定位到需要查看的行,然后点击该按钮,代码会运行至光标处,不需要打断点。
    8.计算表达式,常用于一行代码中调用了多个方法时,计算某个方法的结果,或者在运行过程中,改变某个变量的值。

  3. 变量查看方式
    idea提供了三种查看方式来跟踪变量。
    在这里插入图片描述

  4. 计算表达式
    当一行代码中调用了多个表达式,可以使用该功能查看某个变量或者方法的返回值。
    在这里插入图片描述

    当我们Debug某个方法时,有时候会忘了传入某个参数或者传错了,这个时候又不想重新Debug,就可以通过计算表达式来设置某个变量的值
    在这里插入图片描述

  5. 断点设置条件
    通常我们在遍历一个比较大的集合或数组时,在循环内设置了一个断点,如果一个个的查看变量的值比较麻烦也比较容易错过某个值,这个时候就可以通过断点条件设置来解决了,在满足条件时,才停在断点处,否则直接运行。
    在这里插入图片描述

  6. 中断debug
    在Debug过程中,有时候,我们看到传入的参数有误,不想走后面的流程了(后面的流程可能有操作数据库的代码),这个时候如果关闭程序,重新启动有点太浪费时间了,这个时候我们就可以通过强制返回来终止后面的流程。
    只要右击方法调用栈顶上的调用信息,选择Force Return,输入对应的返回值即可。
    在这里插入图片描述

  7. 多线程调试
    一般情况下,我们调试的时候是在一个线程中的,一步一步往下走。但有时候在Debug过程中,想发起另外一个请求都无法进行了。
    因为IDEA在Debug时默认的阻塞级别是ALL,会阻塞其它线程,只有在当前调试线程执行完时才会走其它线程,可以通过将断点设置成线程级别暂停。
    在这里插入图片描述

  8. 远程debug
    远程Debug,在我们在本地开发的时候,需要调试服务器上的程序时,远程Debug就非常有用。
    一、首先需要服务端开启调试模式,增加JVM启动参数,来支持远程调试。
    java -server -XX:+UseG1GC -Xms2048M -Xmx2048M -Xss512k -Dspring.profiles.active=test -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=12961,suspend=n --server.port=12960
    二、IDEA配置远程Debug环境,设置对应的服务器IP和端口号。
    在这里插入图片描述
    远程debug原理
    Java 程序是运行在Java 虚拟机(JVM )上的,具有良好跨平台性,Java程序统一以字节码的形式在JVM中运行,不同平台的虚拟机都统一使用这种相同的程序存储格式。因为都是类字节码文件,只要本地代码和远程服务器上的类文件相同,两个JVM通过调试协议进行通信(例如通过Socket在同一个端口进行通信),另外需要注意的是,被调试的服务器需要开启调试模式,服务器端的代码和本地代码必须保持一致,则会造成断点无法进入的问题。
    在这里插入图片描述