您当前的位置:网站首页>牡丹烟,邰正宵-车世界,最新车型发布,本地车城信息,优惠信息

牡丹烟,邰正宵-车世界,最新车型发布,本地车城信息,优惠信息

2019-07-18 09:51:02 投稿作者:admin 围观人数:258 评论人数:0次

Debug用来追寻代码的运转流程,一般在程序运转过程中呈现反常,启用Debug形式能够剖析定位反常发作的方位,以及在运转过程中参数的改动。一般咱们也能够启用Debug形式来盯梢代码的运转流程去学习三方结构的源码。

在Intellij IDEA中运用好Debug,首要包北京城地下九层大揭秘括如下内容:

  • Debug开篇
  • 根本用法&便利键
  • 变量检查
  • 核算表达式
  • 智能步入
  • 断点条件设置
  • 多线程调试
  • 回退断点
  • 中止Debug

一、Debug开篇

首要看下IDEA中Debug形式下的界面。如下是在IDEA中发动Debug形式,进入断点后的界面,我这儿是Windows,或许和Mac的图标等会有些不一样。就简略说下图中标示的8个当地:

  1. 以Debug形式发动服务,左面的一个按钮则是以Run形式发动。在开发中,我一般会直接发动Debug形式,便利随时调试代码。
  2. 断点:在左面行号栏单击左键,或许便利键Ctrl+F8 打上/撤销断点,断点行的色彩可自己去设置。
  3. Debug窗口:拜访恳求抵达第一个断点后,会主动激活Debug窗口。假如没有主动激活,可梅葆玖以去设置里设置,如图1.2。
  4. 调试按钮:一共有8个按钮,调试的首要功用就对应着这几个按钮,鼠标悬牡丹烟,邰正宵-车国际,最新车型发布,本地车城信息,优惠信息停在按钮上能够检查对应的便利键。在菜单栏Run里能够找到相同的对应的功用,如图1.4。
  5. 服务按钮:能够在这儿封闭/发动服务,设置断点等。
  6. 办法调用栈:这儿显现了该线程调试所经过的一切办法,勾选右上角的[Show All Frames]按钮,就不会显现其它类库的办法了,不然这儿会有一大堆的办法。
  7. Variables:在变量区能够检查当时断点之万里随波行前的当时办法内的变量。
  8. W千年atches:检查变量,能够将Variables区中的变量拖到Watches中检查


在牡丹烟,邰正宵-车国际,最新车型发布,本地车城信息,优惠信息设置里勾选Show debug window on breakpoint,则恳求进入到断点后主动激活Debug窗口。

假如你的IDEA底部bbq没有显现工具栏或状况栏,能够在短发女生View里翻开,显现出工具栏会便利咱们运用。能够自己去测验下这四个选项。

在菜单栏Run里有调试对应的功用,一起能够检查对应的便利键。

二、根本用法&便利键

Debug调试的功用首要对应着图一中4和5两组按钮:

1、首要说第一组按钮,共8个按钮,从左到右顺次如下:



  • Show Execution Point (Alt + F10):假如你的光标在其它行或其它页面,点击这个按钮可跳转到当时代码履行的行。
  • Step Over (F8):步过,一行一行地往下走,假如这一行上有办法不会进入办法。
  • Step Into (F7):步入,假如当时行有办法,能够进入办法内部,一般用于进入自定义办法内,不会进入官方类库的办法,如第25行的put办法。
  • Force Step Into (Alt + Shift + F7):强制步入,能进入任何办法,检查底层源码的时分可maya玛雅以用这个进入官方类库的办法。
  • Step Out (Shift + F8):步出,从步入的办法内退出到办法调用途,此刻办法已履行结束,仅仅还没有完结赋值。
  • Drop Frame (默许无):回退断点,后边章节详细阐明。
  • Run to Cursor (Alt + F9):运转到光标处,你能够将光标定位到你需求检查的那一行,然后运用这个功用,代码会运转至光标行,而不需求打断点。
  • Evaluate Expression (Alt + F8):核算表达式,后边章节详细阐明。

2、第二组按钮,共7个按钮,从上到下顺次如下:



  • Rerun 'xxxx':从头运转程序,会封闭服务后从头发动程序。
  • Update 'tech' application (Ctrl + F5):更新程序,一般在你的代码有改动后可履行这个功用。而这个功用对应的操作则是在服务装备里,如图2.3。
  • Resume Program (F9):康复程序,比方,你在第20行和25行有两个断点,当时运转至第20行,按F9,则运转到下一个断点(即第25行),再按F9,则运转完整个流程,由于后边现已没有断点了。
  • Pause Program:暂停程序,启用Debug。现在没发现详细用法。
  • Stop 'xxx' (Ctrl + F2):接连按两下,封闭程序。有时分你会发现封闭服务再发动时,报端口被占用,这是由于没彻底封闭服务的原因,你就需求查杀一切JVM进程了。
  • View Breakpoints (Ctrl + Shift + F8):检查一切断点,后边章节会涉及到。
  • Mute Breakpoints:哑的断牡丹烟,邰正宵-车国际,最新车型发布,本地车城信息,优惠信息点,挑选这个后,一切断点变为灰色,断点失效,按F9则能够直接运转完程序。再次点击,断点变为赤色,有用。虚漂浮假如只想使某一个断点失效,能够在断点上右键撤销Enabled,如图2.4,则该行断点失效。

更新程序,On 'Updathacge' actions,履行更新操作时所做的工作,一般挑选'Update classes and resources',即更banana新类和资源文件。

一般合作热布置插件会更好用,如JRebel,这样王子旋就不必每次更改代码后还要去从头发动服务。怎样激活JRebel,在最终章节附上。

下面的On frame deactivation,在IDEA窗口失掉焦点时触发,即一般你从idea切换到浏览器的时分,idea会主动帮你做的工作,一般能够设置Do nothing,频频切换会比较耗费资源的。



三、变量检查

在Debug过程中,盯梢检查变量的改动是十分必要的,这儿就简略说下IDEA中能够检查变量的几个当地,信任大部分人都了解。

1、如下,在IDEA中,参数所内行后边会显现当时变量的值。


2、光标悬停到参数上,显现当时变量信息。点击翻开概况如图3.3。我一般会运用这种办法,便利便利。


3、在Variables里检查,这儿显现当时办法里的一切变量。


4、在Watches里,点击New Watch,输入需求检查的变量。或许能够从Variables里拖到Watche里检查。


假如你发现你没有Watches,或许在下图地点的当地。


四、核算表达式

在前面说到的核算表达式如图4.1的按钮,Evaluate Expression (Alt + F8) 。能够运用这个操作在调试过程中核算某个表达式的值,而不必再去打印信息。


1、按Alt + F8或按钮,或许,你能够选中某个表达式再Alt + F8,弹出核算表达式的窗口,如下,回车或点击Evaluate计牡丹烟,邰正宵-车国际,最新车型发布,本地车城信息,优惠信息算表达式的值。

这个表达式不只能够是一般变量或参数,也能够是办法,当你的一行代码中调用了几个办法时,就能够经过这种办法检查检查某个办法的回来值。


2、设置变量,在核算表达式的框里,能够改动变量的值,这样新银众商有时分就能很便利婚宴酒店咱们去调试各种值的状况了不是。


五、智能步入

想想,一行代码里有好几个办法,怎样只挑选某一个办法进入。之前说到过运用Step Into (Alt + F7) 或许 Force Step Into (Alt + Shift + F7)进入到办法内部,但这两个操作会依据办法调用次序顺次进入,这比较费事。

那么智能步入就很便利了,智能步入,这个功用在Run里能够看到,Smart Step Into (Shift + F7),如图5.1

按Shift + F7,会主动定位到当时断点行,并列出需求进入的办法,如图5.2,点击办法进入办法内部。

假如只要一个办法,则直接进入,相似Force Step Into。


六、断点条件设置

经过设置断点条件,在满意条件时,才停在断点处,不然直接运转。

一般,当咱们在遍历一个比较大的调集或数组时,在循牡丹烟,邰正宵-车国际,最新车型发布,本地车城信息,优惠信息环内设置了一个断点,莫非咱们要一个一个去看变量的值?那必定很累,说不定你还错失这个值得从头来一次。莫绮雯

1、在断点上右键直接设置当时断点的条件,如图6.1,我设置exist为true时断点才收效。


2、点击View Breakpoints (Ctrl + Shift + F8),检查所牡丹烟,邰正宵-车国际,最新车型发布,本地车城信息,优惠信息有断点。

Java Line Breakpoints 显现了一切的断点,在右边勾选Condition,设置断点的条件。

勾选Log message to console,则会将当时断点行输出到控制台,如图6.3

勾选Evaluate and log,能够在履行这行代码是核算表达式的值,并将成果输出到控制台。


3、再说说右边的Filters过滤,这些一般状况下不常用,简略说下意思。

Instance filters:实例过滤,输入实例ID(如图6.5中的实例ID),可是我这儿没有成功,不知道什么原因,知道的朋友留个言。

Class filters:类过滤,依据类名过滤,相同没有成功....

Pass count:用于循环中,假如断点在循环中,能够设置该值,循环多少次后停在断点处,之后的循环都会停在断点处。



4、反常断点,经过设置反常断点,在程序中呈现需求阻拦的反常时,会主动定位到反常行。

如图6.6,点击+号增加Java Exception Breakpoints,增加反常断点。然后输入需求断点的反常类,绿角马如图6.7,之后能够在Java Exception Breakpoints里看到增加的反常断点。

我这儿增加了一个NullPointerException反常断点,如图6.8,呈现空指针反常后,主动定位在空指针反常行。



七、多线程调试

一般状况下咱们调试的时分是在一个线程中的,一步一步往下走。但有时分你会发现在Debug的时分,想建议别的一个恳求都无法进行了?

那是由于IDEA在Debug时默许堵塞级别是ALL,会堵塞其它线程,只要在当时调试线程走完时才会走其它线程。能够在View Breakpoints里挑选Thread,如图7.1,然后点击Make Default设置为默许选项。


切换线程,在图7.2中Frames的下拉列表里,能够切换当时的线程,如下我这儿有两个Debug的线程,切换别的一个则进入另一个Debug的线程。


八、回退断点

在调试的时分,想要从头走一下流程而不必再次建议一张藤子个恳求?

1、首要知道下这个办法调用栈,如图8.1,首要恳求进入DemoController的insertDemo办法,然后调用insert办法,其它的invoke咱们且先不论,最上面的办法是当时断点地点的办法。


2、断点回退

所谓的断点回退,其实便是回退到上一个办法调用的开端处,在IDEA里测验无法一行一行地回退或回到到上一个断点处,而是回到上一个办法。

回退的办法有金手指两种,一种是Drop Frame按钮(图8.2),按调用的办法逐渐回退,包含三方类库的其它办法(健康管理师撤销Show All Frames按钮会显现三方类库的牡丹烟,邰正宵-车国际,最新车型发布,本地车城信息,优惠信息办法,如图8.3)。

第二种办法,在调用栈办法上挑选要回退的办法,右键挑选Drop Frame(图8.4),回退到该办法的上job一个办法调用途,此刻再按F9(Resume Program),能够看到程序进入到该办法的断点处了。

但有一点需求留意,断点回退只能从头走一下流程,之前的某些参数/数据的状况现已改动了的是无法回退到之前的状况的,如目标、调集、更新了数据库数据等等。




九、中止Debug

想要在Debug的时分,中止恳求,不要再走剩下的流程了?

有些时分,咱们看到传入的参数有误后,不想走后边的流程了,怎样中止这次恳求呢(后边的流程要删去数据库数据呢....),莫非要封闭服务从头发动程序?嗯,我曾经也是这么干的。

确切的说,我也没发现能够直接中止恳求的办法(除了封闭服务),但能够经过Force Return,即强制回来来防止后续的流程,如图9.1。

点击Force Return,弹出Return Value的窗口,我这个办法的回来类型为Map,所以,我这儿直接回来 results,来强制回来,然后不再进行后续的流程。或许你能够new HashMap<>()。


有什么不当之处或许更好的办法,欢迎留言!

the end
车世界,最新车型发布,本地车城信息,优惠信息