00:00
你看啊,Idea中的调试啊,注意看需要首先需要两个点,第一看啊,第1BUG调试代码首先需要两个元素就分别是什么断点和。什么第1BUG启动服务器能理解吧,你需要两个点,那么断点就很简单了,哎,断点只需要在什么呢?代码需要停的位置啊,就是代码需要停的行的左边上,双击就可以添加,这很简单的啊,就双击就可以,这单击是吧啊,咱们idea是单击是吧啊单击就行了,来English是双击啊。来单击就可以添加和取消,那特别简单,你再点一下就取消了是吧,好了,另一个呢,是第八个启动,这是一个哈,另一个呢,就是第1BUG启动这个运行。
01:13
代码那也很简单,怎么办呢?就就上面这个东西,看到有个重吗?这个是正常的乱模式,看见吗?看提示了吗?乱啊,这是什么?第八个,第八个就是就是你得先把它停了,然后点这个昆虫啊,就点这个昆虫是吧?嗯,好了。咱们稍微说明一下,这是乱模式,看见吧。啊,这个是第八个模式,咱们以后就经常跟那些小昆虫做朋友了啊,要学会用第bug。诶,他是不是有注释啊,我数字都不用写啊。下面上面是不是已经显示了,我就干脆就就都不用写了,我就换条线就行是吧。
02:05
这这样可以吧,也丑啊,那就算了哈,我就还是换一个大一点的吧,这我觉得太丑来,就这样啊,就这个就在就这个地方哈,就这里第bug就是它看懂了吧,我就写它就行了,我不我不怕那个乱模式了,这第bug要画到你看得懂,看不懂有啥用?第1BUG启动投放cat啊。哎,调试好了,我去把这个拿过来,这该也不是特别难,哎呀,气死我了,不还得改啊,不行,第八个。啊,就这样是吧,OK,改过来好了啊,那启动我给你看看哈,没啥区别,区别不大啊,你就点击它第bug啊,该咋启动还是咋启动,其不大,别着急,当天我还没打呢,我先给你看de bug吧,那看bug是不是也差不多就这么启动啊,啊却不大哈,还是会弹出个东西对吧?好,然后断点,那就点一下呗,比如说我们希望看到这个代码的细节,点一下第一行,一般我们都是点第一行好,或者说是点在出错的前一行能理解了啊,那我们这里呢,其实不出错,就想看看debug看的内容嘛,那我就点一下,点好了以后你就在这边来吧,就注册这里面ZWG1168啊123456 123456啊ZWG168艾Q点com啊,这里是abcde,我估一下不对的,多看几行代码对吧,来。
03:51
这时候点击提交,大家看它是不是停下来了,当然马上就停下来,这个这个窗口马上就激活,这个窗口马上就激活,那么我们说明一下debug调试都要注意哪些点。
04:05
首先首先先看这一行。这一行就是我们需要用的调试的一些菜单。叫做调试工具栏。啊,调试工具栏,还有这边也都是啊,先看这几个吧。看见吧。啊,看这几个,咱们介绍这个叫做调试工具栏。啊,调试工具栏就这个东西。好了,这咱们了解一下,那么在这个调试工具栏里面,每个都有什么作用啊,来一个一个介绍一下,先说这个。是干嘛让代码往下执行一行,对往下执行一行来看啊,让代码往下执行一行,注意看咱们现在这个代码是不是在这一行停着呢,是吧,你只要点它走,它就走一行,后面才能看见这个变量的这个值,你看吗?特别清楚啊,你能看到所有的细节,然后你再点击它右指一行看见吗?啊好了啊,那接着我们就看看这个这这啥对进入自己定义的方法体内。
05:26
来进入,自己定义的就是都可以进入。当前呃,方法体内记住什么样的方法可以进入呢?就是自己写的代码。啊,非非其他的什么呢?框架源码能理解吗?非框架源码啊,或者是他的源码你进不去,这个只能进入到自己的方法体内。
06:01
我给你演示一下哈,什么叫进入呢?来吧,我现在看一下,大家看啊,我往下点,诶大家看他记录,哎,我点错了吗。是多少,这个咱们是不是关联源码了,关联码的话他就可以进来啊,你不关联码进不来,那我先退出来吧,先先退出来,等往下走走走走走走,我先走了啊,先找找看。然后咱们这时候自己的代码呀来看。这个是加了一个for for是必须进入的,来进入,这不进入到自己的防体了,对吧,然后呢,你还可以继续点,继续点还可以进入到这里面来就管理员满了不算了哈,他都知道你代码了,来再次进入走是不是还能进来啊,然后再往下走之后这方码还可以进入,看见了吧,再次进入,然后gd bc get还可以再进入,看下吧,一起进入,好好,那接着我们看看这个。他们俩是成对的,把这个说一下。
07:02
往上走。大家看这是啥跳出,对他说跳出当前方法体内或跳出他们方法体外就跳出去了,能理解吧,跳到当前方法体外。好,举个例子,比如说咱们现在的方法,你是不是get connection,这里面的代码你一目了然,你不想看了,你不想一行行看了,你就点它。C大二看见吗?它就跳出这个方法,就跳出这个方法了,或者说这个方你也不想看了,你再次点它,它就可以跳出去了,看见吧。是不是跳出去了,再点一次,他就能连这个也跳出去。能理解吧,好,再点中也能跳出去,再点就也能跳出去,看见了吗?好,那看看这个吧。看这个FOX set up into。这有啥区别呢,这两个东西就有点区别呢。强制进入所有的方法体内。
08:02
就是不管你能不能进,他都给你反面的进去啊。来就是强制。啊,进入当前方法体内这些都能进了,不管是不是你写的它都可以啊,要不这样子,我在这里加一点东西,我先停一下哈。我先停一下,我加什么东西呢?嗯,咱们看看我写的哪比较合适啊。在哪比较合适?这些大部分都关联到源码了吧,咱们关联源码之后,他基本就能进来了哈,呃,我写一个inte吧,点上。100。100这个代码不是咱们自己写的吧,然后。啊,我随便写个东西啊,就为了看能不能进入进来,呃,叫做some吧,好大家看一下,我在这里打个断点,我就看一会用这两个哪个能进去能理解吧,啊我好像我好像之前演示过一次管理源码,来再试一下吧。
09:05
在第bug启动关联源码就进不来了哈,比较麻烦,来会退,哎,这是这会是不是又需要输入了,太烦了怎么办呢?为了不每次都输入,我在这边基里面。诶,我在这里面是不是可以加上这个挖流属性。我下次可以不用数了,这这能理解啥意思吧,我让他一直留着呗,我就懒得再敲了啊,123456准不对对吧,对不用这东西来123456来邮箱56ZWG168艾特给qq.com啊这个。啊,完了,有abcde是吧,那这不用敲了吗?来咱们刷新一下,跳到注册,他是不是直接有了,我就直接测看一点啊来咱们点击注册,它还会跳过来,是不是还停在这里啊,现在你就往下走,往下走往下走往下走,这代码咱们现在啊用这个进来走,他是不是进不去,因为这代码不是咱们自己写的,看见吗?啊好,但是一会用这个呢,它就能进来了,我再停一次,再进来一次哈。
10:11
停了,在第八个启动一下,你看这个就能进来了,红色那个啊,它是强制进入啊,不管你是什么代码,它都能进去。来吧,走我刷新一下哈,别着急,我点击进来大家看,往下走往下走往下走往下走,诶我这个点开红色看见吧,他是不进来了,他可不管你谁写代码,反正他都能进,看见了吧,他会强制进入的哈,好了,这是这个的作用啊,这个呢这个呢,大家注意看着哈,它会跳到。什么意思?停在光标所在处?停到光标所在处啊,类似于断点,类似于一个临时的断点,特别像,就比如说我再启动一下,我先代码执行到哪了啊,我先进来是吧,我得先跳出来。
11:05
我先停了吧,把这个代码先删掉可以吧,它的作用就结束了哈,然后我演示其他,然后我再次进入到这里面来一点点来哈,再来。好,先停一下,再次停啊,别着急。呃,我在这边再次发起请求,点击等下点击提交,看是不是再次过来了,看这个按钮是啥,是不是跳到当前光标处啊。像比如说他光标在这里看见吗。回停他是不是到这里来了,相当于一个临时的断点,反正就用一次,下次他就不用了是吧,这个断点是一直都在看见吧,啊,就类似这个效果啊,或者说我再希望他调到其他是吧,只要你只到这个代码,只要你的代码提到这里,它就停下来了,懂吧,就类似临时的这个断电啊。啊,你快捷键你自己看呗,我就不说快捷键了哈,你把鼠标移上来,你要看快捷键,这不有啊对吧,你自己用就行了,我就不再去讲了哈。
12:06
来一会儿再说了啊,一个个来,咱们这个是什么呢?就是呃,停在光标是吧,哎,光。光标所在行就相当于是临时观点啊,相当于是个临时观点。临时断点好了啊,然后呢,再来看一下其他一些有用的哈,除了这些工具栏的每个按钮还有啥。再来看啊,调试里面还有一些比较重要的东西,就比如说这个。这个看见吗?这是啥的呀,变量。在这里能看什么呢?咱们说一下啊,这是叫做变量窗口。这是变量窗口。
13:02
呃,咱们说变量窗口,呃,它能干嘛就啊,它可以查看当前方法范围内所有有效的变量。它能查看当前方法范围内所有有效的变量,呃,我给他加个标题好一点。到几了,上面咱们说明一下哈,这个是,呃,7.2.1啊加个指标题,这你们定位快点,这是。工具栏啊,7.2.2啊,调试工具栏,但你自己把它放下来,把它放出来调试工具栏。啊,然后这个是7.2.3对吧,7.2.3。好诶,哎呀,差点把它干掉了,去哪了?把这点哈,把这个拿过来,这是啥呢?这是变量窗口,变量窗口呢,可以查看。
14:05
把这个去掉,不要加速好变量窗口,可以查看当前方法范围内所有有效变量,它的变量是不会变的,我再给你演示一次哈,注意看这里面。我现在执行到哪了?我执行到这一行是吧?大家看一下这是不是当前方法都post,那么它当前方法里面在这里面执行到这里的时候,有效变量是哪一些,比如说request response是不是有效变量,我这里面是不是可以用this址有看见了吗?用户名、密码、邮箱是不是都在啊,当我还有这个什么,是不是u service啊,哎,然后你去看啊,当我再执行一行,那这一行的变量也会变得有效。看见吧,就都能看见,当然你在你在上面也能看见,看见吗?多种多样的方法都可以看啊,都可以看,然后再看啊,我再往下走一行。我在记录这个方法内,大家看我当前方法是不是变了,另我的方法变了,我方法一变,我这边的有效变量也发生变化。
15:08
它是随着你这个当前方法而改变的,能理解吗?然后比如说你再进一次,再进一次,这个变量是不是又不变了。就是你这个范围内所有有效变量都能看,或者说你再走一下再进去这些有效变量是不是右边呢,就这样子啊,这个是变量窗口,查看当前窗口有哪些这个呃,可用变量的。啊,克隆变量的啊好,呃,还有呢,这个这是这个叫做方法赞,双控frame是方法。这个啊。方法正转。来吧,看咱们说5.2.4方法调用窗口。啊,这也是很有用的一个东西,那它能干啥呢?注意看啊,方法调用站可以查看。
16:06
可以查看当前线程有哪些方法调用信息,这是一个啊,它可以查看,你看一下我们这里是不是可以查看调用了que for one什么name什么name,看见吧。啊,那这个方法是谁调用了谁呢?它是有个规律的,你看啊,你虽然可以查看第二点就是什么呢?哎呀,不要加粗,不要加粗正文对,有同学看出来了,下面的。下面的调用上一行的方法,有同学看出来了,仔细观察一下。我现在。在这里面是不是qua for one,那quaify是怎么进来的,其实它是从这个录音机的select,然后是不是读破的方法开始调用它开始调什么的user,诶先翻个来是不是的user nameme对吧?然后再从这个u name,你看往上调,调谁是不que user user name是不是就调上一层,然后上一层就开始调用谁呀,是不是哪个方法BY。
17:16
看见了吧,然后就开始调用调这个,所以下一行调上一行,看懂了吗?就这样子,比如说我现在再次进入到get connection这个方法的话,它又会多一行,请看啊。是不是就多一行下用调用上面这叫做方法藏调用啊方法藏OK,呃,好了,这些暂时啊示咱们常用的一些内容,咱们就暂时先到这个调试到这里啊,当然还有一些按钮,就比如说这边的。这这是啥,我就看一下就停止调试吧,我就这不用我解释哈,不用我解释,或者说我说这个吧。
18:00
这是干啥来这几个按钮啊,这这几个按钮我稍微说明一下就。呃,这几个。这几个有几个比较有用的啊,就稍微说明一下就行了,这个这个红色其实还是停止调试吧,这不用我演示哈,这东西就停止调试。这个。就停止调试啊,程序就停了是吧,你稍微把鼠标移上来就能看见吗。就是东海啊,就停了,程序就停了,就被调去了,对吧。停调试啊,程序就停了,服务器也停了啊停服务器好像都停了,好那么这个呢,也有用啊,这也有用,这是干啥呀。这是会执行到下一个断点就停,让程序一直跑到下一个断点停,就程序一直执行,什么时候有断点,它什么时候停,没有断点呢,他就不停,全部执行完,能理解吧。
19:06
程序一直跑,直到直到下一个断点停下来,如果没有断点,跑完程序。能理解吧,他就一直跑,跑到下面去了啊,就一直往下跑啊,如果没有单点就一直往下走,就这个意思哈,好,那这个。这啥就是这说一下吧,啊,这时候就把这句移上来啊,啊说移上来其他意思。Mut啥意思?看一下啊,MU是不是哑巴无声的呀,就什么呢,就是禁用所有的断点。啊,他会把这个断点所有的都禁用掉啊,就让当前断点呢都失效来吧,就是临时禁用掉所有断点。啊,临时禁用所有单位。
20:04
啊,禁用所有断点,看见了吧?啊,我一会给你演示发来,别着急。我把这个拿过来。呃,哎,就放到来哈,啊,这是其他呃常用调试相关按钮。啊,就这样哈,呃,就这样好,大家看一下哈,我执行到哪了,我先回来看一看,我现在得出去了吧,我得跳出去,一层层跳出去啊。哎,跳出去,诶我跳到这里没了吧,我再来调一次。我再停一下啊,要不然啥都看不到了,都看完了,我在这里再停是吧,Debug启动吧,记住啊,两个不可缺一不可啊,你用你用乱模式能停下来吗?我用乱模式跑给你看看,乱模式不能停啊,一定要记住啊来。稍等一下。他现在启动。
21:00
软模式停不下来的一定要记住哈,当你有断点,但是发现怎么都不停。是不是又退回来了?诶就不停就说明是乱模式启动的吗?你是看一下哈,来在这边点bug。看第八个啊。稍等一下,大大启动。哎,好了。好,那么现在啊,来咱们看一下哈,Debug调试,咱们再次点击它是不是跳过去啊,它是不是一下就跳过来了,停了吗?好,停了以后咱们就看看这个吧,咱们说他是不是停在下一个断点,反正你断点在哪,它停在哪,比如我打在这里。我点它走,它是点在这里啊,就这样哈,那如果说这个这个就是什么,就是你有断点,我临时给你取消,比如说我打断点,这些断点是不是都让它停下来的。但是你注意看,我点上它是不是都变黑了,这次他还停吗?我跟你说它就不停了,你点那个所有的念头临时取消了,诶是不是跑了,看见了吗。
22:08
哎,就这个啊,点上之后就把你的断点是不是取消,划了一条线啊,你再点开它就恢复,这是有勾了,看见吗?有勾就能用了断点啊能用断点OK,这咱们了解一下好。
我来说两句