粉丝24.9万获赞155.5万

设置 idl 一 windows 电脑在菜单栏 oppos 中打开设置窗口。苹果电脑在菜单栏 idl 一中打开设置窗口。 windows 和苹果的 idled 设置窗口是一样的。 首先进行字体设置,选择等宽字体,接下来设置字体大小, 选择合适的字号。设置完字体和字号后,选择嗨 like。 设置主题配色方案,我在下拉框中选择了 id l ex 深色主题方案,还可以自定义一个主题配色方案。我的自定义方案是这样的, 全部设置完成后,点击 ok 关闭窗口,重新打开 idl e, 可以看到设置后的效果。每天一分钟跟我学拍摄,我是凯哥,关注我!


想必大家都想知道 actor debug 该怎么开?先找到游戏目录,作者买不起正版,找到 data, 打开 hxd, 把 data 放进去, 跳转到零零七二五 d 八零,找到零零七二五 d 八零,把倒数第四行的零改成零一。 清除键加速,按 f 十消除碰撞体积可以随便走 f 七增加 g。

零基础学拍范之第八个工具,比如说老师这里啊,想调试这一段程序,那么这段程序的第一行代码在哪呢?是不是在我们行号为三的这个位置? 我们说第一步打断点,第二步调试打断点的位置是不是就是在我们的行号右边的空白位置,单击一下是不是就可以了?那好,我们现在单击一下,我们发现果然如果程序员在这个位置加了单击之后,是不是会出现一个圆点,那么这个圆点是不是就说明断点已经打成功了? 那么接下来这个时候,我们是不是就进入第二步开始去调试了?那么调试该怎么调试呢?朋友们注意啊,调试的方法非常简单,就是在当前这个文件内部右边 任意一个位置啊,我们去右键一下,那是不是就找到了一个润,但是现在点润吗?咱们注意不点润啊,咱们注意往下看,润的底下有底。 bug 后面是不是跟了我们当前这个零三认识 bug 的文件名,那么这个时候我们去单击一下顶 bug 这个选项,同学们注意啊,单击 好,那么接下来我们同学立刻会发现这里仍然拍岔,莫掉出一个控制台,但是这个控制台跟我们默认输出的那个控制台还一样吗?是不是就不一样了?那么这个控制台啊,大概分成了 内容显示区域、工具区域。那么工具区域当中,同学们注意啊,有一个 debug 面板,还有一个 consor 面板, 那老师在这里啊,简单跟同学们介绍一下,如果是这里的第八个面板,他显示数据是在这显示,那么显示的内容是什么呢?就是我们程序执行过程当中的变量及细节都在这里去展示,那么还有一个 ctrl 面板,这 ctrl 面板是干什么的?就是 输出数据显示的位置,那接下来我们就一个个来啊,先看 dbug, 那么当然啊,我们所谓的 dbug 调试啊,其实就是把我们在哪,如果一旦调到 dbug 调试状态,那么就属于一个什么呢?冻结状态, 当我们单击按步操作之后,才会下一行代码,下一行代码依次顺序向下执行, 那具体怎么操作呢?咱们来看一下啊,在这里啊,有一个向后的这样的一个箭头,那么同学们把鼠标放上去,他应该还提示一个快捷键,是吧? f 八,那么这个时候同学们看着啊,老师如果单击一下 是不是就跳到了第二行,那你就表示第一行是不是已经执行完了?那第一行执行完了之后,同学们来看啊,我们的第八个面板展示的是什么呢?是不是 my name? 哎,这是不是我们上面定义好的边料名,然后等 号是什么呢?我们这里写的等号是不是汤姆,但是我们看啊,在控制台第八个这里,第八个这里他提示的是什么? 是不是大括号 str, 这是什么意思啊?注意啊,老师提前跟大家说,这个 str 我们从来没写过,那么这是解释器,通过检查这个变量之后,那么解释器返回给我们汤姆这个数据,它的类型是 str。 那么现在啊,老师又要单击下一步, 那么是不是就跳到了第八行,那么如果老师再单击下一步呢?同学们来看啊,如果老师停在第八行,我们是不是此时程序只有一个变量,那么当我再单击下一步,我们同学来看啊, 死过内幕这个变量是不是也有了?是不是他提示我们我是黑马程序员,这个数据是什么类型啊?我们来看是什么类型,是不是还是 str 啊?对吧?现在我们看到的是不是 程序当中有两个变量,那么在这里是不是都帮我们执行到了,细节是不是都展示出来了,那么展示现在我的代码是不是展示到了最后一行?那么如果当老师再次单击下一步会怎么样呢?单击 我们发现啊,当程序执行完了以后,我们第八个这里还有变量吗?是不是就没有了? 在我们讲变量的时候啊,我们说变量是什么呢?是存储数据的,但是这个变量在哪啊?是不是临时存储在内存当中的?什么叫临时存储,是不是就是你程序执行完了,那么内存当中的这个变量是不是就没有了呀? 对吧?哎,所以这里我们是不是看不到任何的变量了?好,那么接下来啊,同学们注意了,我们是不是把第八根这个面板已经看完了,我们还要去看一下 ctrl 这个面板,那么当老师单机切到 ctrl, 同学们来看啊,这里是不是就是显示的汤姆和我是黑马成选我爱拍粉这 两个数据,那我们现在呢,再去右键第八个一次,然后这一次呢,我们直接切到 ctrl, 我们来看一下, 那同学们来看啊,现在只要打了断点,我们的程序是不是就冻结在断点这一行,那么此时控制台有没有输出汤姆和我爱黑马程序员呢?是不是没有输出啊?对吧?那接下来啊,如果我们点一下暗部操作,哎,下一步, 那么这个时候啊,我们看一下是不是此时只是跳,跳到了变量,执行完了这一行是不是就调到了普瑞尼特,但是普瑞尼特这一行执行了吗?是不是还没有?那我们再单击下一步,同学们注意啊,下一步, 当 print 卖内幕执行完成之后,那我们同学来看啊,控制台是不是就输出了汤姆这个数据,那么这个时候我再单击下一步呢?那我们看我爱黑马程序员这个数据输出了吗?没有,为什么呢?因为 praying 是不是还没有执行到呢?那么这个时候,如果我们再单击下一步的话,我是黑马程序员这个数据是不是就已经输出了?因为 praying 是不是已经执行完了?当然同时 praying 死固内幕执行完成之后,因为我们这个程序之后没有任何的代码,我们整个文件是不是也就运行完成了,对 不对?哎,那这就是我们的一个迪拜工具,那我们是不是能够完美的看到我们的程序是自上而下依次向下执行的,是不是按顺序执行的?那所以我们说迪拜工具是不是可以用来查看我们程序的执行细节, 甚至于变量的类型是不是都能在迪拜的这个面板提示我们,其余 ctrl 面板是不是还能看到完美的一个数据的输出?

哈喽,大家好,我是鱼仔,上期视频介绍了 debug 的八种断点,本期视频就来讲一下进入断点之后的一系列调试技巧。进入断点之后可以看到 debug 工具栏中有一些常用的按键,想看到更齐全的可以在菜单栏的 run debug actions 看到。 首先是第一个 step over, step over 的作用是一行一行的往下走,不会进入到方法的内部。很多人不理解和 step over 的区别, first step over 是强制往下一步跳,哪怕是当前行对应的方法中有断点,也会忽略掉这个断点,而 step over 会进入方法内的断点中。 第三个是 step in to, 这个功能会让代码进入到方法内部,但是一些外部价包的方法无法通过 step in to 进入。如果想要进入外部价包方法内,就可以使用 force step in to, 比如现在就进入了 print 方法内部。 第五个 smart step in two, 这是个很好用的功能,如果在一行代码中有多个方法,这个时候就可以通过 smart step in two 随意指定方法进入,而不需要一步一步的执行下去。当你进入了一个方法内部后,想要跳出就可以使用第六个功能 step out, 跳转到调用者方法处。 step out of code block 的作用是跳出代码快,比如调试负或者瓦欧循环的时候,就可以通过这个功能跳出循环。 狼图克瑞斯的作用是跳转代码到鼠标光标的位置,就好比鼠标光标在的地方就打上了一个断点,但是如果前一个断点的位置和鼠标的位置中间还有断点时,就会进入到中间的断点。 这个问题可以使用下面一个功能 force, 然后读科斯来解决,他会忽略掉中途的断点,直接跳转到光标。八种调试动作到这里就结束了, 我们再来看看其他功能。在第八个处可以看到现成的调用站,当第八个已经进入到某个方法内部之后,如果想要返回退到前一步执行的方法,就可以使用 reset freeman 功能,就会回退到前一步的方法调用。当然也可以直接在调用站中点击方法前的回退图标。 如果运行到某处断点后,即使关闭项目,接下来的代码也还是会执行,有时候就会产生很多脏数据。这种时候就可以使用 force return, 不执行代码直接返回 resume program, 会让程序进入到下一个断点,如果没有断点就结束运行。学会这些后,你的 debug 技术一定会强大不少。以上就是本期视频的全部内容了,我是鱼仔,我们下期再见。

大家在第八个程序的时候是否遇到过因为下一步按的太快啊,导致跳过了想要深入分析的那段代码,是不是很想要有回到上一步这样的一个操作呢? 在第二中其实是有这样的一个功能的,但这个功能并不是万能的,下面我带大家一起看一下这个功能在哪里,以及他具体是怎么用的。 我这边准备了两个测试用力,主要用来演示这个功能,一个是可以回退的情况,以及是以及不能回退的情况。首先看一下第一个测试用力 test one, 这是一个顺序结构,没有任何签套的内容,对吧?这种情况的话我们可以看一下,我先打个断点,然后用第八个把它抛起来 啊。先来看一下这个功能在哪里?呃,在左边,这边 frames, 大家可以看一下,这里有个这样的一个按钮,我们把鼠标全停上去,可以看到它这个按钮的名字叫 reset freeman, 看下面说明可以知道它其实就是一个让你回到上亿级 freem 的一个操作,对吧?然后大家思考一下啊,这里其实这里其实有多少个 freem? 好,在这种情况下面大家想一下这个功能是可以用吗?我来点一下, 在顺序结构的时候,其实他当前情况只有一个 frame, 所以用 the set frame, 他其实是没有办法回到上一个 frame 的,因为他根本就没有上一个 frame, 对不对?所以我们去点他的时候应该是有报错的好,所以说当这种顺序结构 还出顺序结构执行,那么 reset the frame 是没有办法帮助他回到上一步的,这是第一种情况,好了,然后再来看一下 test two, test two 和 test one 有一个区别,就是我们把这边 a 加 b, 我们把它抽向成了一个函数,那这个函数呢?它起的个作用就是把 a 和 b 分别打印一下,然后再把 a 加 b 加起来获得 c, 功能是跟上面是一模一样的,对吧? 那这边其实我们需要分来分析一下代码啊。呃, task two 的主题,它这边 abc 执行下来,由于 c 会调用 a 的,所以这边其实它是会有两个 frame 的, 一个是 test two 的,一个是爱的的,然后爱的是在 test two 里面,对吧?所以说,如果说我把 我把 test two 执行起来,运行到 id 这一步,然后再下一步进到 id 里面,那这个时候其实是有两个 frame, 那么我们通过 reset frame, 其实是可以从 id 的这个 frame 里面去往跳到 test two frame 里面,那么 add frame 执行的内容就 会被就被回退了,对吧?好,下面我们来试一下啊。断点加在爱的这边,然后用第八个跑起来, 好看一下啊,现在静态骚扰了,对吧?然后我通过下一步啊进到艾德了,然后看到没?现在,现在是,现在是有两个,对吧? 那么,呃,因为现在是输出嘛,我要让他执行两下,看到 a 和 b 输出了,对吧?那这两句话已经执行了,那这个时候 普通的第八个 reset 一下回到上一个,哎,又回到 taxi to 了,爱的那个夫人不是 reset 掉了,对吧?好,呃,这个时候我再重新执行, 哎,这个时候再来看康索一下,发现,哎, a 和 b 他又输出了一次啊,所以这两句又重新执行了,是不是 再来试一下啊?再来回退对吧?那么这个时候点还有没有用?肯定是没有用的,因为大家看到 thats too 已经是在顶层了,他已经没有办法再再往回跳了,所以跟这种情况是上面讲的那种情况是一样的。 关于 raser free 这个功能,可能看了这个视频的小伙伴有可能会问,怎么找不到这个按钮? 如果是这种情况的话,大家要去检查一下 id 的版本,因为你现在大家看到的这个 rest free 的这个名称以及这个按钮的位置其实是 ida 最新版本二零二二点一版本星座的调整, 比如说现在你看到的这个是最新的情况,那么老版本的情况是怎么样的呢?老版本的话,其实他首先第一个他不叫 rest frame, 他叫 drop frame, 然后他的位置的话不在这里,而是在,呃,而是这,而是在这,而是在这边 啊。贴个图给大家看,更直观看一下,对,就是这个。好了,今天的分享就到这里,如果你觉得这个分享对你有用的话, 呃,最好是大家要实操一下,因为调试这个这个过程其实还是大家非常会常用的,但是因为这个回退稍微有一些复杂,我自己操作一遍的话会记,记得会更 更深刻一些。嗯,最后如果你觉得这个内容有用的话,记得帮我三联支持一下,呃,这边会持续为大家分享更多开发小技巧。

哈喽,大家好,我是鱼仔,对开发来说,点 bug 是查问题最快的方式,打算发几期视频来介绍一下使用 idea 进行点 bug 的基础知识,以及一些高级用法。 断点是 debug 的基础,在 idea 中基本的断点有四种,首先是行断点,这是最普通的断点,你可以在想要让代码停下来的位置点击打上这个普通断点,当以 debug 模式运行时,代码运行到这里就会停下来。 第二种是方法断点,方法断点是打在方法上的断点,右键这个断点可以选择监听方法的进入和退出。再次运行的八个模式可以发现在进入和退出方法时都被断点给拦住了。 第三种是属性断点,可以在属性上打上这个断点,右键属性断点后,可以选择监听属性的获取和修改运行点。 bug 模式时,所有属性发生变化 的方法都会被断点拦截。第四种断点是异常断点,比如我现在想在发生空指针异常时,让断点暂停在那里,就可以打开断点列表,在这个异常断点处新增一个空指针异常的断点,当发生空指针异常时,断点就会停留在发生异常的那涵弹码。 以上是四种基础断点,通过这四种基础断点可以生成下面四种衍生的断点。第五种是条件断点,比如在一个负循环中,我只希望在 i 等于五十的时候才让断点生效,就可以右键行断点,在 ctrl 输入条件, i 等于五十, 于是只有在满足条件时,断点才会阻断程序运行。第六种是原断点,主要是用于想在控制台上输出某些变量内容的情况,右键方法断点, 然后选上 log 和 invaluate and log, 接着这个变量就可以被输出到控制台了。你可以选择不阻断代码,然后只打印信息,这种断联可以让你不用靠代码而直接输出值。 第七种是多线程断点,有时候为了模拟多线程的运行情况,比如让 a 线程执行一次,再让 b 线程执行一次,这种情况就可以用多线程断点实现。右键行断点,然后选中 siri 的, 然后你就可以先让所谓的零运行一步,再选中所谓的一,让所谓的一运行一步,再用同样的方式去选择所谓的零, 以此模拟现成的轮寻执行。最后一种是 stream 断点, stream 的代码会被写在一个代码段里,在在 stream 的代码行加上断点,就可以在运行到这行代码时,点击 stream trace, 你就可以看到数据的所有流转情况,十分好用。以上就是本期视频的全部内容了,我是鱼仔,我们下期再见。

哈喽,分享一下在爱钓中如何去第八个调试我们的加号程序,也就是说这一排按钮的使用。第一个按钮表示可以回到断点处,我这里随便进入某一个地方, 点一下这个按钮,可以看到回到断点处。第二个按钮 staypool 表示一行一行代码去调试,点击一下 staple 音据表示可以进入方法里面点击一下 pose staple 音据强制进入,可以进入原码,比如说这里尺寸有一个判空的方法,我们先点一下这个,走到这一行代码,然后点击一下 佛使 staple 进去,进入圆码中, staple 表示跳出方法,这里点击下做普 frame 回退断点,比如说我这里没调试到,然后点一下这里 可以重新回到这个地方,然后我们再点击下这里进入我们的方法,这里可以重新去调试这个按钮,表示可以让断点移到光标处,比如说我鼠标放在这里,然后点击下 这个按钮,可以看到现在第八个到了这个方面数,然后这个是表达,是计算,在这里我们可以去写一些小的逻辑,然后去运行查看结果。这个按钮是针对于史君们的挑食,我们点击下第一个是历史的中的初始值菲塔过滤判断是否能被二整出, 这里可以看到剩下的是二十六八,然后 max 可以看到在这些偶数中最大值十八,这样的话就能方便我们去查看时间目中每一个步骤的一个结果。然后我们右击下这个断点,可以看到这里有一个表达,是 在这里有一个循环,如果说我们想要 i 等于五的时候才第八个,我们可以在这里写一个 i 等于五的条件,然后我们点击下这个按钮去运行,这里可以看到 i 等于五的时候第八个进来了,这样的话就很方便我们在循环中去第八个指定的条件。以上的这些操作便是爱调中第八个的常用小技巧,你学会了吗?

大家好,我是瓷砖哥华皇宫,本期为大家分享打印输出教程。第四讲, swo 打印输出配置基于 koswv。 分享内容之前,先给大家讲述一下几个专业名词, swdswo 和 swv s w d 及创新线调试。 s w d 和杰萨格是单片机常见的两种下载调试接口。 s w o 及创新线输出,也就是单片机上的一个输出赢奖,类似于创口的 tf 赢奖。 s w 位及创新线查看器,也就是显示中端用于显示打印输出的内容, 比如本视频接下来描述的基于 cl 的 swv。 那比如后面一期视频给大家分享的基于 s t 领克 utet 的 swv。 讲述正文之前还要给大家讲解一下关于 itm 的知识, itm 的一个主要用途就是支持调试消息的输出,在长江的 m 三、 m 四、 m 七单品机类盒中都有这个模块, 与普通串口不同的是, itm 内部有 fifo, 不会造成很大的岩石。接下来讲站文基于 koswv 的 swo 打印输出配置。 第一步,配置 sw 音角配置成 swo 输出模式。第二步, q 选项配置,主要是食能频率和端口的配置。第三步,重定音函数 itm 音设 itm 默认端口铃也可以自己修改。 配置好以上几步,就可以在 kosw 位中端打印输出数据了。 好了,本期就分享到这里,本视频对应的文章教程可以在我公众号后台回复关键字打印输出教程查看详细的内容。 最后欢迎大家搜索用户关注我。

哈喽,大家好,我是万环的视频,视频,那之前有同学在私信里面说这个 idadbug 很强,但是呢他不知道怎么样去啊使用,然后问我有没有就是, 嗯比较常用的一些,然后非常酷炫的这种第八个的小技巧,可以来一起分享一下啊。今天呢我就给大家来带来这么四个技巧吧,首先是带条件的断点,然后就是断点的这个回退啊, 然后就是咱们比较用的多的就是这个执行表达式,最后就是比如说你不想执行了,然后你直接跳出啊,都是怎么样去做的? ok, 然后首先呢我们这个地方来演示一下这个带条件的断点啊,大家可以看到我们怎么样打这个条件断点呢?首先我们比如说啊,有一个非常大的否循环啊,我们通过其他的这个接口来拿到了一堆 user, 然后呢我们线上有一个问题是某一个 user 的这个 id 他执行起来会有一些问题,然后我们又不想去,呃,花很长时间来循环嘛,对不对?一个一个来定位,所以说我们这个地方就可以来执行一下这个 condition, 就是条件表达式啊,很简单, 首先就是你在这个地方打一个断点,然后你右键鼠标右键啊,然后他就会弹出这样的一个呃,细节的这种第八个设置面板,然后在这个地方他会有一个 condition, 然后他会读取到当前行的一个变量,比如说当前行有一个 user 的变量,对吧?你就可以这样来做啊,如果说这个 user id 不等于空,并且这个 user 点 get id 等等于十一,哎,我们就让他挺住, ok, 然后我们这个地方是有一个测试数据啊,就是他会有两条数据返回,一个是十,一个是十一,对吧? ok, 所以说我们 在运行的时候呢,理论上应该是只有十一 id 为十一的时候,他才会断点给我们停住,对吧?我们来看一下这个效果是不是我们想要的。这个地方,我们直接让他跳过, ok, 好, 他停住了,对吧?然后我们来看一下这个 user, 哎,确实是十一,然后刚才那个 users, 它应该是有两条数据,对吧?一个是 user id 等于十一,个是 userid 等于十一,所以说这个时候呢,我们的条件断点就生效了,那用这种方式呢,就可以极大地来提高我们断点调试的一个效率,缩短我们断点调试的一个时间。 ok, 我们让这个程序继续往下走下去啊,那接下来呢,我们来演示一下这个断点的回退啊。断点的回退什么意思呢?就是说你断点执行到了一个具体的行号,然后你发现那个行号上面的一些内容你没看清楚,你想 让他退回去啊?重新执行一遍,你再来做一些调试,再来做一些这个细节的查看啊,这个时候呢,我们就可以用到这个断点的回退啊。首先我们在第一行打一个断点,然后我们会有一个方法是 get user from others, 然后我们在这个地方呢给他打一个断点, ok, 然后我们来演示一下这个是什么样的一个效果, ok, 呃,我们首先来运行一下 debug, okay, 看一下啊,哎,他在第一行停住了,对吧?然后我们直接让他跳到这个 get users from other 这个方法,然后呢我们让他执行一段啊,这个就是 你现实生活当中的一个具体的逻辑了,但是现在我用一个输出来表达了, ok, 你发现你执行到这一行的时候啊,一百零四行的时候,你发现你之前的那些行好像有点没太看清楚,那这个时候呢,你就可以来选择这个断 点的回退啊,新的这个 id 它是非常的便捷啊,就是在你执行的这一行看到没有,这个有个第八个面板,然后下面有一个 frames 是你执行的这个战争,然后在每一针的这个前面呢,他会有一个撤回的这样的一个 reset frame 的这样的一个快捷操作。 那你老一点版本的 ida, 它可能是在这个上面的这些符号这一区域啊,那你就根据你自己的一个方式去找到这个 reset frame 或者是 drop frame 的这样的一个操作就可以了。这个时候呢,我们选择这个 reset frame 啊, 你可以看到他直接就跳出了这个方法,然后把断点啊调到了这个进入方法之前的这个时候, ok, 那么我们再往下执行的时候呢,我们首先来看一下这个控制台,刚才我们是已经打印了这个 get users from others 这个输出了,对不对?我们再往下执行一下, 哎,他还会打印,对不对?那如果说你还没看清楚,哈哈,或者说你在给别人演示的时候,你还想回退也是可以的,就回退就行了,然后我们再往下走, 哎,这个时候再来看一下控制台输出了三次,对吧?所以说呢,这个就是非常便捷的一个方式了啊,可以让我们去,呃,回到过去,哈哈哈哈,回到过去,对吧? 那第三个呢,就是去执行表达式了啊,这个执行表达式可能很多同学都已经知道了啊,我们首先在这个地方给他打一个断点, ok, 来个第八个, 哎,它这个地方是有一个方法是 get user from other system 啊,我们让它往下执行下去,然后这个地方 user 它有可能三方系统它有问题啊,或者说,呃,三方系统返回来的这个 user 它里面有某些,比如说 id 啊,比如 说一些啊属性啊,不是你现在想要的啊,就是你很简单的拿到一个 user, 不能够去满足你下面的一些逻辑,你明白我意思吗?比如说下面你有些判断啊, user 什么什么属性等于什么什么啊,才会执行那个东西。那么这个时候呢,你就可以去执行一个表达式, 你可以直接在这个地方执行啊,新版的 ida, 他这个地方会有一个快速的 expression 的这个表达式的输入框,你可以比如说 user 啊,点 set id 等于十或者十一,对吧?然后你完事了之后呢,你一运行,你会发现这个 user 现在它的一个变量就变成了 id 等于十一。 还有另外一种方式呢,就是你可以去执行这种长段的啊,这个地方有一个 evaluate expression 啊,或者是这个在 mac 下面的是 ctrl 加 f 八啊,我们点完了之后呢,这个地方就可以让你去执行这个大段的这 那个 user expression, okay。 比如说啊,我之前有一个 case 是这样的,就是线上有一个问题,然后他, 呃,在数据组装和数据拼接的时候啊,就他没有完全的任何和数据库的交互,和缓存的交互,和其他系统的交互,就是一个内存当中的数据的转化这样的一个东西。然后我发现那个地方有 bug, 然后呢我就把线上的那个 查询数据的那个结果给打印出来,然后把那个线上的那坨数据的 jason 粘到测试环境啊,粘到我本地,然后我在这个地方呢搞了一个 jason, 点 pass object, 然后把那个 jason 传进去啊,把这个 user, 这个 user 就大概这么个意思吧,点 class, 然后让他序列化一下,那这个时候这个 user 不就跟你线上那个 jason 那个东西一模一样了吗?然后你就可以继续让代码往下走,你就 专门看哎,那个数据组装那块的逻辑啊,为什么线上那个数据会有问题啊?所以说这个查起来啊就非常的有用。 ok, 所以说这个是我们的一个执行表达式啊, 我觉得就是说,呃,你学会了这个执行表达式以后,你后期在断点调试的时候,他会有非常多的一个使用场景,比如说你去修改他的一些值啊,去实现某些条件的运行,对吧?包括就是我刚才说的线上数据,那个本地副线啊,都是能够用的上, ok, 我们让程序走完吧。啊,那最后就是我不想继续往下执行了,我想跳出这个特别简单啊,我这个地方首先给他运行起来, ok 啊,我们往下运行, ok, 然后首先是查出来的这个 u 子,然后我们去执行了一堆巴拉巴拉的锁 记,对吧?然后我们发现我们这个逻辑呢有点问题啊,不能够继续再往下执行了,因为你继续往下执行,他这个地方就把数据库的一个值给更改了吗?对不对?然后如果说你测试的这个数据很难造,然后你还要去删数据,或者说你要去改一些数据库的值, 那就很麻烦,所以说你已经找到了这个问题所在嘛,你就不想让他继续往下运行了,很简单,你就把光标定位到这个执行的这一行,然后右键这个地方呢,有一个 force return 啊,当你去点了这个 force return 以后呢 啊,那么他那个 update 语句就不会执行了哎,你会发现他这个地方是没有去进行任何的数据库的这个 update 的操作的啊,就是那个 my badest 的这个 map 的一些打印没有打印出来啊,所以就证明我们的这个程序已经跳出了 ok, 后续是没有再进行操作的。那这个时 视频呢,我们就简单讲这样几个小玩意啊,如果说大家对于这个的 bug 的一些调试技巧啊啊,实操啊这方面的一些内容有感兴趣的话呢,可以来点赞这个视频啊,然后想要听哪方面的一个内容呢,也可以在下方的留言,我们一起来交流一下。 好的,那以上呢就是本期视频的一个全部内容了,感谢大家的收看,我们下个视频再见吧! peace 三连支持一下!三连支持一下。

在 idea 中进行程序调试的几个小技巧,看一下代码实例,这个代码比较简单,这个方法是用来进行计算的,我在第五行加了一个断点,咱们来执行一下, 现在想断点调试第七行,一般来说我们可以在第七行加入断点,然后直接往下走即可。这里咱们有个更好的办法,可以将光标移到第七行,通过 outf 九 就可以直接到断点我们光标的所在位置,现在想查看按的的方法加和是多少。咱们在这里可以输入表达式,然后敲击回车,可以看到他的返回结果。同样咱们也可以通过快捷键 outf 八唤醒双口, 然后同样输入表达是敲击回车,也可以看到他的返回结果。并且这里可以动态对参数进行复制,比如这边的 a 我复制为四,敲击回车 后,咱们在这边会发现他的 a 值已经变化了。同样如果咱们再用这个表达式,发现他的返回结果已经变成了六。最后再看一下在循环中调试指定条件,看一下代码视力,这是一个放循环, 我只想在 i 等于四的时候进行调试。这里咱们可以打入一个断点,然后鼠标右键在这个地方输入咱们的条件,比如说这里就是 i 等于四,点击完成,咱们在 debug 运行一下,会发现只有 i 等于四的时候进入了断点。小伙伴们还有什么实用的调试方法吗?评论区分享一下。