当前位置:首页 > 开发工具 > Idea的一些调试技巧及设置todo

Idea的一些调试技巧及设置todo

2022年11月06日 08:51:50开发工具15

 

 

 

 

程序员的工作内容,除了大部分时间写代码之外,因为有不少的时间是用在调试代码上。甚至说不是在调试代码,就是即将调试代码。 :)

今天我们来谈谈调试代码的一些技巧,在使用IDE提供的debugger时一些快速定位问题的方式。

看到这里的朋友,不要马上认为我标题党,再往下看看,如果你还有一些更好用的技巧,欢迎留言。

下面进入正题。

1 多线程调试

开发过多线程应用的朋友应该有体会,有些时候,为了观察多个线程间变量的不同状态,以及锁的获取等,就会想到在代码里加个断点debug一下。

在IDE里断点停下来的时候,可以切换到另外的线程中,跑其他的代码,不会互相影响。当然,这里是有个开关的,在Eclipse里默认开启,

但是在IntelliJ IDEA里默认是没有开启的。也就是说如果你在IDEA里代码里加断点,虽然一个线程的断了下来,但其他线程的已经执行过了。
此处把线程的suspend设置成和Eclipse模式一样之后,也可以开始多线程应用的调试。
简单设置可以直接在断点处,将suspend改成Thread

Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 

 
更改IDEA中的默认设置:切换到"Thread" Radio Button,点击出现的按钮 ”Make Default"
Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 


 
 

一个线程断下来之后,可以通过在线程窗口切换,到其它线程中继续运行。

IntelliJ IDEA里在这儿切换

Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 

 

我们看到main线程pool-1-thread-1这两个线程都处于RUNNING状态,切换到任何一个都可以继续运行。

此时,就可以写一个多线程的应用,同时向ArryList这一类非线程安全的容器中存放内容,然后观察为什么他们是线程不安全的,会出现什么问题,生动又形象。

PS: 这里顺道说一下,这就是为什么创建线程时建议起一个有意义的名字 ,至少是可以识别的名字,否则在这里都不能区分出哪个是自己的线程,想切换还麻烦。

2 后退执行

这里所说的后退执行,是有些时候我们在debug代码时,懒的每个方法都进入单步调试,就会出现你观察一个变量值的变化时,某个方法没跟进去,结果值就变了,不得不重来一次

依靠后退执行的功能,可以后退,就像下棋时悔棋那种功能一样。当然,这个后退操作的名字是我自己起的,在IDE里被称为Drop Frame

Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 


 

有了这个功能,我们在Drop 了当前这个Frame之后,已经改变的变量值不会恢复。比如你向当前调用方法里传入了一个List,并且在方法中向List里添加了内容,那在Drop到调用该方法的地方时,List不会恢复到之前的状态。

但是在该方法再次被调用时,你可以观察List什么时候被改变的,至少不需要再重跑一遍程序了。甚至你可以一言不合就后退。

3 条件断点

为了调试代码,就需要在要观察变更的地方添加断点,然后小心翼翼的一步步执行。
但是如果是在一个循环里,又或者该方法会被多线程同时调用到的时候,你小心的向下单步调试,发现没有你关心的内容,又从循环开始处跑下来,还是没你的内容,人就开始烦燥起来。

其实,在添加断点的时候,我们可以为断点增加一定的条件,这样,在指定的条件满足时,断点才会生效。

IntelliJ IDEA内,在断点上右击,会弹出如下图的条件框,输入指定的条件即可。

Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 


 

有了条件断点,不相关,不感兴趣的代码就可以直接跳过了。

4 片断代码

这个没想好用什么名字来表述。有些时候在调试过程中,忽然想招待一段与此相关,但不在源文件中的代码来观察一下,辅助进行问题分析。此时你会停止程序,添加代码然后重新跑一次吗?

在IDEA里有一个执行代码片断的功能,可以在当前代码的上下文内,执行你临时写的代码。

例如,当前方法传入一个List,但这个方法里少一个你后面条件需要使用到的元素,此时你可以临时使用片断代码执行的功能,添加一个进去。

注意,在IntelliJ IDEA里,这个上面红框,像个小计算器的按钮就是临时执行的功能,点击之后,会弹出按钮下方这个Evaluate Expression(Ctrl+F8)的框,输入代码,点击右下角的Evalute即可。返回值会显示在Result处。

Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 


 

这就就相当于临时改变了变量内容。

然后,还可以调用对象的方法,执行功能,获取属性值等。

Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 


 

5 查看变量修改值

每个IDE在调试代码时都提供了一个观察当前上下文变量值的窗口。其实除了查看之外,一些非final的基本类型,还可以直接在此处修改值。这样如果多次循环执行时,每次可以恢复到期望的值,不需要重启程序。

Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 



作者:侯树成
链接:http://www.jianshu.com/p/cfa0f049054e
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

TODO是什么说白了它就是一个高亮显示的注释,方便定位的工具。(eclipse也有,小白估计没用过)

 

IntelliJ idea  预定义了两种TODO模式如下:
Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 

\btodo\b.*
\bfixme\b.*

 解释一下上面模式啥意思:不懂的时候第一眼这是什么东西啊,其实熟悉正则表达式的人一想也就明白了,它就是两个正则表达式,"正则中“\b”是元字符代表着单词的开头或结尾,也就是单词的分界处。现在我们看上面两个正则表达式“\b   \b"中字符串:todo跟fixme,该表达式单纯表达的意思就是匹配todo.*跟fixme.*

todo可以解释为“要去做的xxx,还未发生”(想一下我们学过的英语动词不定式 to  do  sth),fixme即需要自己修改的,放到编程的注释中就是:

// TODO + 说明:

在该注释处有功能代码待编写,待实现的功能在说明中会简略说明。

// FIXME + 说明:

该注释处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。

下面直接上效果图:下图一选中第一个Pattern
Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 


---------------------
作者:aspu O_O
来源:CSDN
原文:https://blog.csdn.net/dyr_1203/article/details/83016441
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

 



IDEA 中定义自己的TODO 并设置快捷键

 Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 

 Idea的一些调试技巧及设置todo _ JavaClub全栈架构师技术笔记

 

 

刚好看到阿里巴巴开发规范的对于TODO的说明,粘贴出来有需要的可以参考

11. 【参考】特殊注释标记,请注明标记人与标记时间。注意及时处理这些标记,通过标记扫描, 经常清理此类标记。线上故障有时候就是来源于这些标记处的代码。  

       1) 待办事宜(TODO):( 标记人,标记时间,[预计处理时间])    表示需要实现,但目前还未实现的功能。  这实际上是一个 Javadoc 的标签,目前的 Javadoc 还没有实现,但已经被广泛使用。只能应用于类,接口和方法(因为它是一个 Javadoc 标签)。  

      2) 错误,不能工作(FIXME):(标记人,标记时间,[预计处理时间])    在注释中用 FIXME 标记某代码是错误的,而且不能工作,需要及时纠正的情况

需要阿里巴巴Java开发手册(1.4.0版本)以及插件 可以去官方的GitHub上下载:https://github.com/alibaba/p3c
---------------------
作者:o猜拳0
来源:CSDN
原文:https://blog.csdn.net/qq_38878455/article/details/82933174
版权声明:本文为博主原创文章,转载请附上博文链接!

 

作者:沧海一滴
来源链接:https://www.cnblogs.com/softidea/p/7245884.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/tool/68112.html

标签: IDEA
分享给朋友:

“Idea的一些调试技巧及设置todo” 的相关文章

IntelliJ IDEA安装教程(超详细)

IntelliJ IDEA安装教程(超详细)

IDEA安装教程目录 一、JDK的彻底卸载(选做) 二、JDK的安装 三、IDEA的安装 四、IDEA的“扩展”教程 五、代码测试 六、Error:Cannot determine path to 'to...

工程专题|idea一个对话打开多个工程

工程专题|idea一个对话打开多个工程

摘要 在我们刚开始学习java的时候,使用的最多的ide工具就是eclipse,在eclipse中我们可以同时打开多个项目,很方便的在项目之间进行切换,刚开始接触idea的时候,我们发现在一个窗口只能打开一个项目,如果需要打开多个项目就只能打开多个窗口,非常不方便,...

IDEA 返回上一步,回到下一步  冲突  快捷键设置

IDEA 返回上一步,回到下一步 冲突 快捷键设置

idea 本身的上一步下一步快捷键和其他软件有冲突,所以改下上一步下一步的快捷键 原来的快捷键,如果没有冲突可以直接用啦 回到上一步 Ctrl + Alt+ <-(左箭头) 回到下一步 Ctrl + Alt +...

IDEA 配置环境变量

IDEA 配置环境变量

作者:基咯咯 来源链接:https://blog.csdn.net/u010180815/article/details/105219332...

IntelliJ IDEA调出problem窗口

IntelliJ IDEA调出problem窗口

一、File =>Settings 二、搜索Compiler=>勾选Make project automatically 三、出现问题Problems窗口会报错 作者:goldmei88 来源链接:ht...

Mac IntelliJIdea 打开项目没反应

Mac IntelliJIdea 打开项目没反应

  最近拿着公司的mac回家想通过VPN写点东西,发现通过idea打开项目没反应,只能首先去当前用户目录里的idea启动日志去分析原因:     作者:坤少_jkson 来源链接:https://blog.csdn.n...

IntelliJ IDEA不好用?那是因为没掌握这些技巧。

IntelliJ IDEA不好用?那是因为没掌握这些技巧。

想要愉快的coding,一个好的IDE肯定少不了。而对于Java开发者来说,IntelliJ IDEA绝对是Java-IDE的首屈一指的选择(eclipse党还请绕我一命)。 从我第一次下载IDEA到现在已经有一年半了,时间越久我发现我对这个超级智能的...

IDEA全局替换快捷键

IDEA全局替换快捷键

Intellij IDEA使用教程相关系列 目录 Intellij IDEA 强大的搜索能力 IDEA全局替换 通过快捷键 Ctrl+Shift+r 或这点击 Edit 》Find 》Replace In Path 有些IDEA版本按了快捷...

IDEA新建springboot项目maven项目不能导入maven依赖,右边没有maven窗口

IDEA新建springboot项目maven项目不能导入maven依赖,右边没有maven窗口

一、背景和解决办法 用IDEA创建的springboot项目不能导入maven依赖。并且在IDEA右上角也没有出现maven窗口,打开pom.xml发现有一段报错,pom.xml 显示的图标也很奇怪(source文件夹黑乎乎的) **怎么办?...

IDEA连接sqlserver数据库

IDEA连接sqlserver数据库

IDEA连接sqlserver数据库 数据库配置 登录名 端口设置 下载JDBC包 在IDEA中导入jar包 数...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。