IDEA的这几个调试的骚操作,用了都说爽!

2023-11-03

来源:https://dwz.cn/zMaNp9Kf

一、条件断点

循环中经常用到这个技巧,比如:遍历1个大List的过程中,想让断点停在某个特定值。

参考上图,在断点的位置,右击断点旁边的小红点,会出来一个界面,在Condition这里填入断点条件即可,这样调试时,就会自动停在i=10的位置

二、回到上一步 

该技巧最适合特别复杂的方法套方法的场景,好不容易跑起来,一不小心手一抖,断点过去了,想回过头看看刚才的变量值,如果不知道该技巧,只能再跑一遍。

参考上图,method1方法调用method2,当前断点的位置j=100,点击上图红色箭头位置的Drop Frame图标后,时间穿越了

回到了method1刚开始调用的时候,变量i变成了99,没毛病吧,老铁们,是不是很6 :)

注:好奇心是人类进步的阶梯,如果想知道为啥这个功能叫Drop Frame,而不是类似Back To Previous 之类的,可以去翻翻JVM的书,JVM内部以栈帧为单位保存线程的运行状态,drop frame即扔掉当前运行的栈帧,这样当前“指针”的位置,就自然到了上一帧的位置。

三、多线程调试

多线程同时运行时,谁先执行,谁后执行,完全是看CPU心情的,无法控制先后,运行时可能没什么问题,但是调试时就比较麻烦了,最明显的就是断点乱跳,一会儿停这个线程,一会儿停在另一个线程,比如下图:

如果想希望下一个断点位置是第2句诗句,可能要失望了:

如果想让线程在调试时,想按自己的愿意来,让它停在哪个线程就停在哪个线程,可以在图中3个断点的小红点上右击,

即:Suspend挂起的条件是按每个线程来,而非All。把这3个断点都这么设置后,再来一发试试

注意上图中的红框位置,断点停下来时,这个下拉框可以看到各个线程(注:给线程起个容易识别的名字是个好习惯!),我们可以选择线程“天空中的飞鸟”

断点如愿停在了第2句诗。

四、远程调试

这也是一个装B的利器,本机不用启动项目,只要有源代码,可以在本机直接远程调试服务器上的代码,打开姿势如下:

1、项目启动时,先允许远程调试

 java -server -Xms512m -Xmx512m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081 -Djava.ext.dirs=. ${main_class}

起作用的就是

-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9081

注意:远程调试从技术上讲,就是在本机与远程建立scoket通讯,所以端口不要冲突,而且本机要允许访问远程端口,另外这一段参数,放要在-jar 或 ${main_class}的前面

2、idea中设置远程调试

然后就可以调试了

前提是本机有项目的源代码 ,在需要的地方打个断点,然后访问一个远程的url试试,断点就会停下来。

五、临时执行表达式/修改变量的运行值

调试时,可以临时执行一些表达式,参考下图:点击这二个图标中的任何1个都可以

点击+号后,就可以在新出现的输入框里输入表达式,比如i+5

然后回车,马上就能看到结果 

当然,如果调试时,想动态修改变量的值,也很容易,在变量上右击,然后选择Set Value,剩下的事,地球人都知道。

善用上述调试技巧,相当大家撸起代码来会更有感觉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IDEA的这几个调试的骚操作,用了都说爽! 的相关文章

  • Java垃圾回收机制深入理解

    文章目录 一 简介 二 Java内存结构 三 什么是垃圾 四 垃圾收集算法 1 标记 清除算法 Mark and Sweep 2 复制算法 Copying 3 标记 整理算法 Mark and Compact 4 分代收集算法 Genera
  • 微软live服务器地址,在Mail中设置windows Live hotmail方法

    Mail是苹果系统的内置软件 是一款非常棒的软件 用起来很自然 起码和outlook比起来给人的感觉是这样 接下来是小编为大家收集的在Mail中设置windows Live hotmail方法 希望能帮到大家 在Mail中设置windows
  • c++ 在一行中输入若干个数,以空格间隔

    在一行中输入若干个数 以空格间隔 直到输入回车以结束 这是我在做PTA的题的时候发现回车输入逻辑有先后区别 题目如下 给出若干个正整数 请找出出现次数最多的数 输入格式 在一行中输入若干个数 以空格间隔 读入数的总个数不超过5000 输出格
  • ModuleNotFoundError: No module named ‘distutils.util 的解决方法

    ModuleNotFoundError No module named distutils util 的解决方法 使用 curl https bootstrap pypa io get pip py o get pip py sudo py
  • python轮胎缺陷检测_基于数字图像处理的轮胎缺陷检测

    摘要 随着汽车工业和道路交通运输业的迅猛发展 由于子午线轮胎具有胎面不容易变形 比较良好的稳定性 使用安全和耐用等特点 并且子午线轮胎的功能明显优越于普通斜交胎 其应用越来越普遍 已成为世界轮胎发展中的主要产品 但是子午线轮胎在制造过程中工
  • Navicat for mysql连接mysql时遇到的问题及其解决方法

    今天电脑重新装mysql 遇到了一个问题 authentication plugin caching 大概这样 懒得写了 找了好多教程 乱七八糟的就是解决不了 最后找到一篇博客https blog csdn net u011182575 a
  • 7. python爬虫——基于xpath爬取58同城房源信息

    python爬虫 基于xpath爬取58同城房源信息 1 需求 2 分析 3 代码 4 实现效果 1 需求 获取58同城上所有房源的标题信息 https bj 58 com ershoufang 2 分析 使用抓包工具进行分析 发现所有的房
  • vue2-element,vue3-element-plus 的列表翻页的序号

    前言 这里整理下 vue2 vue3中用饿了么框架的列表 序号随页增加的功能 vue2 page 当前页 pageSize 一页显示多少条 type index index indexMethod 序号翻页连续排序 indexMethod
  • 【踩坑笔记】从零开始在Linux和Windows部署安装kIash

    klash是一个基于规则的路由 可以为多地服务器之间配置特定的连接规则 加快后端业务响应速度 从零开始在Linux和Windows部署安装klash 一 材料准备 二 安装步骤 windows端 linux端 三 问题and踩坑 一 材料准
  • 敏捷开发流程

    一 敏捷起源 2001年2月 Martin Fowler Jim Highsmith等17位著名的软件开发专家齐聚在美国犹他州雪鸟滑雪圣地 举行了一次敏捷方法发起者和实践者的聚会 在这次会议上面 他们正式提出了Agile 敏捷开发 这个概念
  • 如何在php中获取curl请求的请求头信息及相应头信息

    1 获取请求头信息 可以在curl exec函数执行前 添加代码curl setopt ch CURLINFO HEADER OUT true 在curl exec函数执行后 通过 curl getinfo ch CURLINFO HEAD
  • dom模板列表-2

    模板列表
  • TensorRT 初探(1)—— conv2d:IConvolutionLayer

    tensorrt之conv2d计算详解 环境搭建 简介 代码 设置prepadding和postpadding prepadding postpadding与paddingNd冲突时 设置padding mode 总结 附录 环境搭建 环境
  • 浅谈JVM基本结构

    目录 1 JVM概念 2 JVM基本结构 3 JVM存储数据案例 1 JVM概念 JVM是Java Virtual Machine Java虚拟机 的缩写 JVM是一种用于计算设备的规范 它是一个虚构出来的计算机 是通过在实际的计算机上仿真
  • app提交上架最新流程 ios

    一 上架基本需求资料1 苹果开发者账号 公司已有可以不用申请 需要开通开发者功能 每年 99 美元 2 开发好的APP 二 证书上架版本需要使用正式的证书 1 创建证书 Apple Developer 2 上传证书 Sign In Appl
  • css3 隐藏滚动条但是有滚动效果的方法

    前沿 相信好多小伙伴都遇到过这个需求 那就来说一下 原理 就是在滚动区域的外部在套一个盒子 设置外部这个盒子宽比内部的少20px 其实也就是滚动条的宽度 然后在overflow hidden就可以了 接下来看个小例子
  • Unity把png图片转换为sprite格式

    最近自己在做游戏项目 经常碰到导入的图片是png格式 但是要转换为sprite格式才能应用 以下是转换的简单方式 不需要代码的 1选中要转换的png图片 在Inspector窗口查看属性 2在窗口中找到Texture Type选择Sprit
  • Java程序员项目面试

    如何做自我介绍 自我介绍该怎么做 要介绍什么 自我介绍尽可能控制在3分钟以内 关于技术介绍以外例如 性格 爱好等尽可能忽略 自我介绍时应该主要包含下面几个内容 个人信息 15秒 学习经历 30秒 工作经历 2分钟 其中社招工作经历最为重要
  • Python 根据Excel修改文件名称 封装成.exe程序

    目录 前言 一 实验环境 二 实现步骤 1 设计思路 2 引入库 3 具体代码 4 封装成exe程序 5 功能展示 总结 前言 公司想要一个可以在任何一个Windows电脑上能使用的工具 可以根据Excel表格内容来修改图片的名称 我本来打
  • MySQL 为什么在实际开发中一般不使用外键约束

    阿里开发手册 强制 不得使用外键与级联 一切外键概念必须在应用层解决 1 外键优点 保证数据的完整性和一致性 级联操作方便 将数据完整性判断托付给了数据库完成 减少了程序的代码量 2 外键缺点 业务数据生成顺序 未必一定可以先生成外键的值

随机推荐

  • 树莓派街机乱码--batocera 中文乱码 --RetroArch 中文乱码

    1 下载中文字体1 重命名为NanumMyeongjo ttf 2 打开WinSCP 连接树莓派 用户名密码为 root linux 3 替换 usr share fonts truetype nanum目录下的NanumMyeongjo
  • OIer JCY

    OIer JCY 一 初一的寒假 大雪纷飞 JCY来到了他的初中 那是坐落在长春市边缘的一栋L形的建筑 冗长的走廊两边设着教室 教室和走廊之间只有门上和靠天花板的地方开着小玻璃窗 透进来些许微弱的光线 灯又不常开着 因而整个走廊总是十分昏暗
  • k8s里面Deploy控制器的使用

    为了更好的解决服务编排的问题 kubernetes在V1 2版本开始 引入了Deployment控制器 值得一提的是 这种控制器并不直接管理pod 而是通过管理ReplicaSet来简介管理Pod 即 Deployment管理Replica
  • 剑指Offer第六十一题:序列化二叉树

    题目描述 请实现两个函数 分别用来序列化和反序列化二叉树 思路 这里序列化就是直接先序遍历即可 但是反序列化指输入序列 返回tree 这里由于左右子树位置不知道 所以在序列化的时候加入 字符 以此判断子树为空 注 这里需要使用char 转s
  • 通用Mapper插件和MyBatis拦截器的使用

    通用Mapper和MyBatis拦截器的使用 MyBatis拦截器 拦截器的使用 MyBatis 拦截器的简单实现 实例结果验证 orderBy createTime默认排序 拦截器在项目中的使用 通用Mapper 简介 使用教程 通用Ma
  • 子词切分算法

    最近使用transformer训练机器翻译模型 期间也看了一些关于数据预处理分词的方法 了解了transformer 1 的subtokenizer以及bpe算法 其中subtokenizer分为形成词汇表与处理训练文本两个部分 形成词汇表
  • 呼叫中心中间件(mod_cti基于FreeSWITCH)-排队(ACD 话务分配)接口

    进入排队 cti acd acdname maxwaittime s priority
  • I - Ultimate Army(栈)

    I Ultimate Armyhttps vjudge csgrandeur cn problem Gym 102267I include
  • Xcode工程依赖

    我使用的Xcode版本 3 2 6 通过Xcode设置工程依赖之后 Xcode会先编译被依赖工程 最后编译有依赖工程 达到控制编译顺序的目的 但是设置依赖这种办法 只适用于所有的工程拥有相同的配置 Debug与Release 这种情况下 如
  • Linux 命令 ps aux 命令解析

    一 简介 PS 是 Linux 系统命令之一 在 Linux 中是查看进程的命令 查看正处于 Running 的进程 linux 上进程有 5 种状态 运行 正在运行或在运行队列中等待 中断 休眠中 受阻 在等待某个条件的形成或接收到信号
  • 菜鸟学四轴控制器之6:刀具半径补偿算法

    为什么要有刀具补偿 想象一下 如果我们的刀具可以理想到半径无穷小 倒是不需要考虑半径的补偿 但是实际上我们用到的是刀具的边沿在雕刻物体 如下图 简单来看 好像是直接平行于轮廓进行移动就可以了 其实不然 单条直线的雕刻是平行 但是直线和直线
  • /etc/rc.d/rc.sysinit脚本分析

    bin bash etc rc d rc sysinit run once at boot time Rerun ourselves through initlog 通过 sbin initlog 命令重新运行自己 if z IN INIT
  • 【Jenkins】安装提示: this account either does not have the privilege logon as a service

    错误详情 安装 Jenkins 时系统提示如下错误 this account either does not have the privilege logon as a service 1 解决方案 2 选择 本地安全策略 按下Win R组
  • C++11之用户自定义字面量(ClassType operator““_C(param...))

    系列文章 C 11之正则表达式 regex match regex search regex replace C 11之线程库 Thread Mutex atomic lock guard 同步 C 11之智能指针 unique ptr s
  • QT开发错误集

    1 error multiple definition of QWidget 在项目 pro中 SOURCES 处添加的 h和 cpp文件有重复添加 将重复的去掉就可以了 2 VS2010 QT 很多代码下面会出现红色波浪线 项目 属性 v
  • Python员工信息作业

    作业简介 根据用户输入 来实现增删改查 处理员工信息数据 1 信息格式 2 文本数据 1 Alex Li 22 13651054608 IT 2013 04 01 2 Jack Wang 28 13451024608 HR 2015 01
  • c++ 等待子线程结束_第3篇 Linux系统编程--线程生命周期与状态

    在上一篇中 我们已经通过知道如何创建多个线程 本篇会谈论到线程的生命周期 在此之前应该了解一下线程在一个进程中的内存布局 主线程和线程栈 每个栈都是一个独立的虚拟内存分配 可以将其放置在任意位置 重要的是要注意 栈的大小通常是有限的 操作系
  • 了解 sourceMap 配置

    Devtool 此选项控制是否生成 以及如何生成 source map 选择一种 source map 格式来增强调试过程 不同的值会明显影响到构建 build 和重新构建 rebuild 的速度 配置很多 分别有以下几种 eval 每个模
  • 一些常见数学问题的算法

    代码来源 晴神 算法笔记 一 最大公约数 int gcd int a int b if b 0 return a else return gcd b a b 二 最小公倍数 lcm a b ab d ab有可能溢出 因此更恰当的写法是a d
  • IDEA的这几个调试的骚操作,用了都说爽!

    来源 https dwz cn zMaNp9Kf 一 条件断点 循环中经常用到这个技巧 比如 遍历1个大List的过程中 想让断点停在某个特定值 参考上图 在断点的位置 右击断点旁边的小红点 会出来一个界面 在Condition这里填入断点