clodeblocks debug断点调试_Intellij IDEA高阶DEBUG大杀器

本文介绍了如何在复杂的环境中通过IntelliJ IDEA进行远程DEBUG,包括设置条件断点、不暂停断点、多线程调试以及使用'Drop Frame'功能回溯调试步骤。这些高级调试技巧能帮助开发者更高效地理解代码执行流程,尤其在处理多线程和复杂逻辑时更为实用。
摘要由CSDN通过智能技术生成

前言

目前工作中由于环境复杂等客观因素,无法在本地启动项目进行 Trouble Shooting,需要打开测试环境的 DEBUG 端口,进行远程调试。为了不影响其他用户同时使用测试环境以及相关系统的正常请求,只好再祭出 Intellij IDEA 的 DEBUG 大杀器了。本文主要介绍平时用到几种 DEBUG 高阶用法。

快速上路

安装Intellij IDEA

Intellij IDEA 每次更新都会有些小惊喜,谁用谁知道。

If you don't have intellij idea installed, return.

条件断点

  1. 找到需要断点的代码行,鼠标点击左侧边栏设置断点(CMD + F8 )。好吧我废话了,这个大家都会。
  2. 右击断点,在 Condition 处填入你所需要的判断条件。
f602af9e239a96d761e1c177378e11fd.png

3.当 DEBUG 时候断点会停留在 i = 5 的位置。

9e9f3cf244774a0980d2df53d251ab4a.png

不暂停断点调试

  1. 依然找到需要断点的代码行。右击设置好的红色断点,选择 More(SHIFT + CMD + F8 ),此时会弹出断点的设置菜单。
  2. 启用不暂停断点,去除 Suspend 勾选框,勾选 “Breakpoint hit” message 以及 Evaluate and log。如果你对代码的调用层次不清楚或者你在阅读学习源码,你可以勾选 “Stack trace”,
6e924f157957a1fc20b1e4008ed4e8e0.png

配合 Grep Console 插件,调试效果无敌。蓝色部分是我们打印的调试日志,红色框部分记录了断点是否执行以及代码调用的堆栈。

8b201c88d7c23a1f4ef17e167b8f0489.png

3.条件断点 & 变量值修改:条件断点就不再赘述了,Evaluate and log 不仅可以记录日志而且可以修改变量。如图所示,在 i==5 的时候,我人为添加了一条测试的假数据。

d2e24017e2007355e7f184ef782a725c.png
1809bb4e764c6e2ecf6a7a5f89580914.png

多线程断点调试

多线程调试蛮头疼的,因为代码执行的先后顺序完全看 CPU,断点跳来跳去,这就给调试带来了很多麻烦。IDEA 具备多线程调试的切换能力,你可以按一定顺序来调试线程的代码。

  1. 设置线程断点。右击断点设置 Suspend 挂起条件为 Thread。
6eb4b8aa88a39b773c6072efbfc07bed.png

2.断点挂起时,可以切换线程进行调试。

c77c15be05e457334b3b3fbc23c70c5f.png

“后悔药”可以有

平时调试的过程中经常遇到断点不小心跳过了,想回头再看看刚才的值或者更进一步的 DEBUG,是不是傻头傻脑地重新再跑一遍?

可能你会想到使用代码调用栈返回查看调用情况,但是你没办法在历史的某一步再重新调试。其实 IDEA 提供了返回上一步的功能,这个功能在学习源码的时候特别有用,可以几个断点之间反复来回研究并 DEBUG。

  1. 如下图所示,如果我想回到第一个断点重新执行调试怎么办呢?
1db67ebf74997100546532d1a31e8551.png

2.执行两次 Drop Frame 即可,可以看到 value 的值重新回到 0。

c4e7a3ab2a3dab783c552c3428dea50a.png

该方法切勿在真实环境中使用!!!因为丢弃栈帧如果没有操作释放干净可能会影响变量的值,导致程序结果与真实结果不一致!!!

结束语

你可能习惯了单步 DEBUG,短时间不会适应不暂停断点的调试方式,然而在复杂的功能场景下,如多线程、多层循环等,这种 DEBUG 方式不仅调试的速度更快,而且更有利于加深对代码整体的理解。

对了,在这里说一下,我目前是在职Java开发,如果你现在正在学习Java,了解Java,渴望成为一名合格的Java开发工程师,在入门学习Java的过程当中缺乏基础入门的视频教程,可以关注并私信我:01。获取。我这里有最新的Java基础全套视频教程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值