Debug是开发者必备的基本技能。伴随着开发生涯,只要需要写代码,就一定有debug的吸引力……因为大多数开发者都是用Debug来确认程序是否按预期工作(单元测试也是可以的)。debug是一个很常用的技能,我们自认为已经掌握了,有点像说话,每个人都可以说出来,但不是每个人都可以表达影响...每个人都可以debug,但是一些debug的方式可能会更有效率,走吧直接进入主题;相信大家都知道如何启动Debug:1、在Idea中点击某个程序文件的目标行旁边,设置一个小红点。即断点:2.使用Debug按钮运行程序。如果程序能到达断点,就会开始进入Debug模式。3、基本操作是:stepin,进入方法,stepover,直接执行到下一行,stepout,跳出当前方法,重复1、2、3步,这几步是主要的步骤一开始调试;让我分享一些稍微隐藏一点的调试方法。断点相关经验只有满足一定的条件才能进入断点。如果Debug位置是网关入口,流量会很大,各种类型的请求都会跑到这个断点。如果不能按条件进入断点,会极大的影响我们的效率。因为进入断点的请求不是我们想要的;此时可以为断点设置条件,当前请求必须满足一定的条件才能进入Debug模式。点击程序目标行旁边的生成小红点;右击小红点,在程序中设置条件为条件;例如用Debug运行时,不会到断点处。而且设置断点条件后,断点旁边还会多一个?不同于普通的断点。调试断点只生效一次,不阻塞系统。如果您说Debugarunningsystem,则所有后续请求将默认暂停。很多人以为系统死了……其实,原来是你在调试。有没有办法在调试时不阻止剩余的请求?默认情况下,只有一个断点;当断点被打破时,整个系统不会挂起;如下,通过断点管理器,回车,或者右击断点,然后点击更多进入,设置暂停选项,只暂停当前调试线程,然后勾选Removebreakpointoncehit。静态断点,我只是想看看程序会不会跑到这里(类似于动态日志)。我想判断请求是否可以到某个位置,但又不想进入调试模式。感觉太重了。我可以通过这条线吗?只是做一个日志?这对于有时程序的某些方法没有记录,但想在这里确认是否可以执行很有帮助。在断点配置中查看,打后记录,或者自己加一些其他的输出:不要挂起程序,打日志组管理断点(系统中不同链接的断点)系统中常用的链接主要有就那么几个,经常debug的地方就那么几个。您可以管理这些位置的断点。遇到问题可以直接拿出断点组管理。这里的remoteserverDebug主要是配置问题,和本地Debug没有太大区别,学会配置即可。启动程序时:java-Xdebug-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005-jar要发布的程序的jar包名称.jar在Idea中:调试相关体验程序已经进入断点,是时候排查问题了。有什么需要了解的吗?快速执行到某个位置有时我们的断点没有设置在某个位置,但是我们又不想设置在那个位置;调试的时候,我们想让程序直接运行到那个位置,怎么处理呢?第一种方法:将鼠标移动到相应的行号,然后按下运行到光标按钮:第二种方法:直接点击文件旁边的数字,运行到回滚重新开始执行的相应行在一些复杂的链接,方法调用很长,握手后代码多跑了几行。这个时候如果想重新开始执行这个断点怎么办呢?正常运行是模拟发送请求,重新进入断点;但其实Idea已经提供了相应的方法,直接退出当前帧即可,断点后会重新进入方法开始执行。点击Frame位置的withdraw按钮,会重新进入这个方法开始运行,中断后续的执行环节。如果调试中途发现有可能向数据库写入脏数据,想直接停止当前调试。怎么做?同样在框的位置,右击,可以提前返回,不继续跑。这个提前返回是针对当前方法的,也可以直接抛出异常;Java8调试Strem流后labmda表达式中的一般过程会多一点,也不好调试。idea也有相应的工具。可以直接查看Strem流中的数据,在DebugWindow中下发。如果labmda表达式被识别,就会显示出来。在Debug模式下运行一些额外的代码在Debug模式下,Idea提供了一个类似于解释器的工具,可以输入一些额外的程序运行,即使它与本次调试无关;当然,有一个存储,这个表达式执行只会返回最后y行语句的结果。总结Debug代码是一个常用且非常常用的技能,但并不是每个人都能高效地调试代码……;还有一些隐藏的debug方法思路,虽然有些人不注意,但是很有用,可以大大提高效率;文章主要介绍一些在实际项目中比较有用,可以提高调试能力的经验。最后,如果有问题,但是没有办法进入调试模式,可以考虑arthas的trace和watch。
