你不知道的 IDEA Debug调试小技巧

做者:EamonZzzphp

 

  1、多线程调试断点

Intellij IDEA 的debug断点调试是有一个模式的选择的,就像下面这张图,平时咱们都使用的是默认的 ALL(在Eclipse中默认是线程模式) ,这种模式咱们只能将一个线程断下来,但其余线程却已经执行过了;而将其改成 Thread 后,就能够多个线程都断下来,而且能够很方便的切换线程的执行流程,这就是多线程调试。多线程

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

debug控制台可以很方便的查看线程的执行状态,也能够很方便的选择某个线程去执行:编辑器

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2、回退断点

不知道大伙有没有遇到这样一个问题,当咱们进行debug时,一般不会进入某个方法一步一步的执行,而是选择性的跳过;当你想要回头观察某个变量的值得变化时,而你恰好没有跟进去,跳过了这个方法,这个时候,变量就被赋值了,咱们一般的作法是重来一次。ide

其实IDEA的调试功能是很是强大的,咱们来看看熟悉的调试窗口:spa

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

使用红色框框出来的部分,表示当前程序执行到哪一块,哪一部分,你能够尝试用鼠标点点看,你会发现编辑器会跳转到对应的代码中,固然当前断点的位置一般会在列表的第一条。而后咱们使用右键单击,你就能够看到以下图所示:线程

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

或者你也能够在下图中找到 Drop Framedebug

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

在IDEA中,所谓的回退,叫 Drop Frame,选择Drop Frame后,程序会跳转回调用当前这个方法的地方,固然已经改变的值是不会恢复的。可是当该方法再次被调用时,你能够观察到某个变量何时被改变,至少咱们不用再去从新运行一遍程序。3d

3、条件断点

条件断点就是当知足某个条件(一般是表达式)时,debug断点才会生效;这在循环中debug是很是有用的;例如咱们想要在循环体中调试:当某个变量知足某个条件时,须要断点调试,来查看详细的执行流程及变化状况。调试

咱们说过,IDEA中的debug功能是很是强大的,要使用条件断点也很是简单,下面这张图片中 Condition中的内容表明当nameeamon:23时,程序执行到断点处停下来。code

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

有了条件断点,这样一来,那些不相关和咱们不关心的代码就能够直接跳过了。

4、临时断点

所谓临时断点就是只断一次,IDEA默认断点会一致存在。若是你只须要暂停一次,那么使用临时断点会比较方便,由于暂停一次以后断点就自动消失了,不用手动取消。

临时断点能够经过在打断点时按住 Alt 或者 option 键,而后建立断点。也能够经过右键断点处,选择 more 而后在窗口中选中 Remove once hit

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

5、求值计算

求值计算功能在咱们debug过程当中,能够很方便的查看程序中全部变量的值,也能够临时修改程序中变量的值,这个功能能在必定程度上辅助咱们进行代码调试。

这个功能能够在debug时在debug窗口打开:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

打开后是这样的:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

而后你就能够在表达式输入框中,输入你想要的操做,好比,查看变量、修改变量(临时的)、调用某个方法等;这些操做结果将会在下方的Result 窗口中输出。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

相关文章
相关标签/搜索