这样Debug,排查问题效率大大提升…

Debug是开发人员必备的基础技能,伴随着开发生涯,只要需要写代码,就一定有debug的诉求… 因为大部分开发同学都是用Debug来确认程序是不是预期进行(单元测试也可以)。,Debug一个非常常见的我们以为自己已经熟练掌握的技能,有点像说话一样,每个人都可以把话说出来,但不是每个人都能表达出影响力…,大家都会Debug,不过有些Debug的方式可能确实会效率更高一些,还是直接进入主题吧;,相信大家都知道如何开始Debug:,1、在Idea的某个程序文件的目标行旁边,点击一下,设置个小红点。即断点,图片,2、使用Debug按钮运行程序,如果程序可以走到断点这里,就开始进入Debug模式。,图片,3、基本操作就是:,重复1,2,3步骤,刚开始调试的时候主要就是这几个步骤;,下面分享一下一些稍微隐藏一点的调试方法。,如果说Debug的位置是网关入口,那么流量会很大,各种类型的请求都会走到这个断点里面,如果不能按照条件进入断点,会非常影响我们的效率。,因为进入断点的请求,都不是我们想要的;这个时候可以对断点设置条件,当前请求中必须有满足什么条件才会进入Debug模式。,1、点击程序的目标行旁边,生成一个小红点;2、右键小红点,可以在condition那里设置程序中的条件;,图片,举个例子,如下当用Debug运行的时候,是不会走到断点的。,图片,而且在设置完成断点条件后,断点旁边会多出一个?和普通的断点不同。,图片,如果说Debug某个正在运行的系统,默认情况下会挂起所有的后续请求,很多人都以为系统死机了… 其实最后发现是你在调试。,有什么办法,可以在调试的时候不阻塞剩余的请求吗?1、默认只断点一次;2、断点的时候不挂起整个系统;,如下,通过断点管理器器,进入进来,或者右键断点,然后点击more可以进入进来 设置挂起选项,只挂起当前正在调试的线程,然后再下面勾选一旦命中移除断点。,图片,图片,想确定请求能不能走到某个位置,但是又不想进入debug模式,感觉太重了,能不能如果经过这一行就直接打个日志呢?,这对于有时候程序的一些方法没有打日志,但是又想确认是不是能执行到这里有帮助。,在断点配置里面勾选,命中后打日志,也可以自己加一些其他的输出:,图片,图片,系统常用的链路主要就几条,而常调试问题的地方也只有几处,可以把这几处位置的断点管理起来,在遇到问题的时候直接把断点分组管理拿出来就可以了。关注公众号:码猿技术专栏,回复关键词:1111 获取阿里内部Java性能优化手册,图片,这里主要是一个配置问题,和本地Debug区别不大,学会配置就好了。启动程序的时候:,在Idea里面:,图片,程序已经进入断点了,这个时候要查问题了,有一些需要了解的吗。,有时候我们的断点没有设置在某个位置,但是也不想设置在哪个位置;在Debug的时候想让程序直接运行到那个位置,怎么处理?,第一种方式:鼠标移动到对应的行数,然后按下run to cursor按钮,图片,第二种方式:直接点击文件旁边的数字即可,运行到对应的行哪里,图片,在一些复杂的链路中,方法调用很长,手一抖结果代码又运行了几行,这个时候想去重新开始执行这个断点怎么办?,常规操作是再模拟发出个请求,重新进入断点;但其实Idea已经提供了对应的方式,直接撤回当前的帧即可,断点会重新进入方法开始执行。,在Frame的位置点击撤回按钮,就会重新进入这个方法开始运行,图片,如果说debug到一半发现可能会往数据库写入脏数据,想直接停止当前的调试,怎么做?,同样在帧的位置,右键,可以提前返回不继续运行,这个提前返回是针对当前的方法的,也可以直接抛出异常;,图片,Java8之后的labmda表达式里面一般流程会多一点,也不是很好调试,Idea也有对应的工具,可以直接查看Strem流中的数据,在Debug Window下发,如果识别到labmda表达式后会展示出来。,图片,图片,在Debug模式下,Idea提供了一个类似于解释器的工具,可以输入一些额外的程序在运行,哪怕和本次debug无关;,当然有个店是这个表达式执行只会返回最后y一行语句的结果。,图片,图片

文章版权声明

 1 原创文章作者:cmcc,如若转载,请注明出处: https://www.52hwl.com/22804.html

 2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈

 3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)

 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年3月5日 上午12:00
下一篇 2023年3月7日 下午10:34