• debug技巧之本地调试


    大家好啊,我是summo,今天给大家分享一下我平时是怎么调试代码的,不是权威也不是教学,就是简单分享一下,如果大家还有更好的调试方式也可以多多交流哦。

    如果看过我文章的同学应该知道我是一个Java开发,平时都是Spring全家桶。后端和前端虽说都是写代码,但调代码的时候还是有点不同的,前端可以console.log一把梭,但是Java只用 System.out.println是不行的,原因也很简单,“前端热部署快,后端慢”,后端总是避不开断点调试的,如果还有没学会断点调试的同学,建议还是学习一下。

    好了,废话不多说,开始正文~

    本地调试的方式主要看使用的IDE,我平时都是用的IDEA社区版,感觉比MyEclipse和Eclipse比较好用一些。

    一、debug模式启动应用

    这个还是很简单的,我相信只要不是手抖都不会点错。但是有时候我们会发现平时很快就启动好的应用,突然变得特别慢,好几分钟都启动不好。一般出现这种情况的原因有可能是你将断点打在了方法上,这个IDEA官方也有说明,如下。

    Note that using method breakpoints can slow down the application you are debugging.
    使用方法断点会使得正在debug调试的程序变慢。
    

    解决办法有两个
    a. 找到方法上断点取消掉
    b. 如果断点不好找,直接找到IDEA的BreakPoints全部取消就好了

    二、调试功能

    • Resume Program(继续程序):当程序处于暂停状态时,点击这个按钮会使得程序继续执行,直到下一个断点或者程序结束。
    • Step over(单步跳过):这个按钮允许你执行当前行的代码,但是不会进入当前行调用的任何方法内部。如果当前行调用了一个方法,那么这个方法的执行会“跳过”,直接执行到这个方法的返回处。
    • Step into(单步进入):与 Step over 不同,Step into 会进入当前行调用的方法内部。如果当前行是一个方法调用,那么程序会暂停在这个方法的第一条可执行行。
    • Force Step into(强制单步进入):这个按钮允许你强制进入一个方法,即使该方法的源代码不可用(例如,它可能是一个第三方库的一部分)。通常,当尝试使用 Step into 进入一个没有源代码的方法时,IDEA 会忽略这个步骤。但是,使用 Force Step into 可以强制程序进入方法,即使没有源代码。
    • Step out(单步返回):当处于一个方法内部时,点击这个按钮会使得程序执行完当前方法的剩余部分,并在方法返回时暂停。这允许你快速退出当前的方法,返回到调用它的代码中。

    这些调试功能对于理解程序的执行流程和调试程序中的错误非常有帮助。自己可以多试试。

    三、 Evaluate Expression

    这个功能是我用的最多的,非常好用,强烈推荐!!!

    1. 它在哪?

    进入debug后,代码区右键打开菜单

    2. 它长啥样?

    上面是输入框,下面是输出

    3. 它有什么作用?

    • 查看变量值
    • 修改变量值
    • 执行方法
    • 查看复杂数据结构
    • 调试信息输出
    • ... ...
      不仅上面这些,它甚至可以写一段新的代码执行,我演示几个吧,不然没感觉。

    (1)查看变量值


    (2)执行方法


    (3)新的代码块

    四、小结一下

    调试Java程序,用IDEA社区版挺方便的。设置断点的时候别太随意,否则启动程序会慢得跟蜗牛似的。用好单步调试,能帮你一步步看清楚程序是怎么跑的。还有那个表达式评估,简直就是调试时的万能钥匙,啥都能干。最后,记得多学多练,调试这门手艺,越磨越亮。

    作者:不若为止
    欢迎任何形式的转载,但请务必注明出处。
    限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

  • 相关阅读:
    关于Jupyter markdown的使用
    揭秘一线大厂Redis面试高频考点(3万字长文、吐血整理)
    B3614 【模板】栈
    [C/C++]数据结构----顺序表的实现(增删查改)
    UFT On录制Web应用时无法识别Chrome浏览器对象
    某头部通信企业:SDLC+模糊测试,保障数实融合安全发展
    centos7 离线部署Chrome 117,并配置chromedriver
    【Recommend System】----CTR 建模
    音视频同步测试方法
    Python基础运算分享
  • 原文地址:https://www.cnblogs.com/wlovet/p/18182401