粉丝223获赞490

大家好,这次我们先看一下这个汇编语言学习的时候啊,要用到的这个基本的工具,就是这个第八个这个工,因为我这台机器是那个问问时他这个在命令, 在命令窗口里面他没有没有这个第八个这个程序,如果是问十以下的那些那些些的话,问七好像就有,问七就有这个在这个运行里面我们打这个孔慢的,然后直接就直接就可以这个第八个, 因为这个我我这个是没有,如果是其他的问题以及以下的这个系统,他就会直接有这个命令,所以呢在问时里面他就要装这个,就就要安装这个都是 box, 都是 box。 然后另外呢还要进行配 这个是这个配置的工作,是还是还是有点烦的?首先要要要去下载这个,要要去下载这个软件,安装了以后就是这个都是 box。 那具体怎么配置呢?就是安装好了以后啊要要下载到 这个下载到这些命令第八格啊,或者说或者说 ad 特等等那那些命令,然后放到那个那个文件夹下面,文件夹下面这个具体怎么怎么去配置这个东西,这个网上另外有有有这个这个指导,比如 比如安装好了之后我们有这个这个文件夹,这个文件夹下面呢,他就有会有这些命令,就有。但是像这个这些这些这些命令呢,我们要另外在网上去下载,下载的这个时候 这有版本问题,他有的版本又不匹配,所以这个时候要慢慢去找,这个是还是比较烦的哈,就是最好的话呢,就是 我们在这里,在这里直接就就运行这个款慢点,然后就就可以使用这个第八个是最好的,就是 也就说你直接安装一个问期或者以下的这个系统,可以直接用了,直接用问八,问七问八好像都都可以啊,装装好了,如果是安装的话呢?这个在在这个都是 box, 这个这个文件出来,这个文件夹出来以后啊,他另外还有配置一个东西, 比如我这个,我我我这台电脑呢,提示要在这个文件里面啊,去去修改一下,就是 money 一下就是挂载,把那个目录挂载一下,就是安装好了之后啊,他其实只有这个,这一旁只有这个,这 没有 c 盘,什么东西要有 c 盘出来了,要有 c 盘出来就就要找到,按照他这个规定找到这个文件,找到这个文件的,然后我们在这里编辑一下, 那么在这里编辑一下我们这个打开方式,他就直接用直接用这个这个这个笔记本打开就可以了。 这个文件呢,他在最后要加这加这个两行,就是那个刚才那个那些命令啊,那些用到的这个命令我是放在这个文件夹下面的。这个第八个呢,我也是放在这里,其实都可以放一个文件夹下面跟命令这些,这些 就是就是用到的这些这些命令啊,我都把它放在这里来了,我都把它放在这里来了。所以呢这个没什么,宁可和 ad 的这些命 都放在这个文件夹上,所以加这个蒙特,蒙特这个蒙特这样然后就可以就可以就可以使用了。在这里这个蒙特命令的意思呢?他其实是就是把这个低盘,我们可以这样理解,就是这个低盘啊,我我我,我们在这个命令行,下面,你比如运行的加了这一句以后啊 我们看这个这个低盘,然后呢在这个低盘下面我们就可以直接直接用这个,为什么这个文件夹下面的这些命令 就可以直接用了?也就说这这一句话,这这个这个挂载这个意思就是什么呢?把这个这个盆服当做这个文件夹来看待。就刚才讲的那个猫头命令呢,其实也可以直接在这里,在这里用这个退出来,这个前面呢他我们安装好多次 book, 是以后他这个提示, 不是这这他没有装,安装之前这个挂在挂在用 money 命令挂在之前呢,他没有吸盘底盘,我们可以直接在 z 的下面直接输这个, 比如,比如地方这个这个他没有冒好,然后这里有的冒好,这样也也可以这样,这样也可以这样挂的,就是这个把把这个首先这个 m 这个这个文件夹下面呢,你要把那些命令要迪巴给啊, m, a s, m, a, d 特等等这些命令要要要先放进,这样挂起来也可以用。


哈喽,各位同学大家好,咱们这节课来聊一聊 debug 与调试,那这是咱们的翻外篇啊,又迎来了一个额外知识的补充哈。好,首先呢,我们先介绍一下什么叫做 bug 这个概念, 那 bug 呀,在咱们计算机里面代表的是程序出现错误的时候的那个错误,为什么呢?因为在之前啊,哎,计算机都是长得这幅样子的啊。然后呢,一位女工程师有一天在调试程序的时候,哎,发现不对啊,这个程序运行出现了问题, 于是乎呢,打开了里面的机器啊,他们那个时候检查错误还得把机器打开,打开之后就发现里面躺着一只虫子啊,当然这个虫子已经被压扁了啊,所以说呢,从那开始,大家都把计算机里面的错误啊称作哎, bug。 好,那我们知道这点之后呢, 接下来我们就说一说 debug, 那检查故障,排除错误的过程叫做 d bug, 在英文里面的话呢,加一个 d e, 它的代表词意思是啊,针对你,或者说除掉你的意思,所以 debug 就是检查错误啊,针对这个错误的意思啊。好了, 接下来啊,我们就要看一看,在咱们的 vivos 九九里面,我们应该如何逮到这只虫子。 咱们在 vs 里面啊,使用的技术就是断点调试的技术。那什么是断点呢?现代的 i d e 啊,那么都会提供断点的功能, 我们只要打上断点之后啊,就可以用于控制程序执行到哪一行代码时就停住了,那只要他停在那行代码那里,我们就可以观察当时程序的现场情况了。哎,看一下各个变量都 变成了怎样的值啊?咱们今天要介绍的内容呢,分为三个步骤,首先呢我们介绍如何给程序打断点,然后打完断点之后又如何让程序继续执行,或者是一条一条语句过程执行。 第二个的话呢,就是当咱们的程序啊停在断点的地方之后,我们如何观察程序的现场,如何看一下每个变量都是什么值?接下来呢,最后一点就是我们如何使用条件断点。好,咱们呢先看一下啊, f 一把它截下图, ok, 把它放在某个地方就好了啊,变小一点来,咱们接下来去到 vs 里面, 在这里呢给大家已经准备好了一些代码了,我们大概溜一眼,然后呢咱们看一看应该如何 给程序来打断点啊,首先我们声明了一个 int a 等于十,然后在这边啊做了一个 a 的自增运算, 制作完之后呢又做了一个 interb 的变量,他等于 a 加上加加 a 这样一个啊表达式。随后呢咱们把这个 b 打印输出啊,非常简单的代码啊,咱们在在用这个代码的时候呢,主要是来练习一下如何使用断点。好,咱们首先介绍断点, 比如说呢,程序肯定是要从 a 等于十这个代码开始运行,然后啊我希望让他停在 int b 等于 a 加上加加 a 这一句话,那应该如何让他停在这里呢?大家注意看啊, 我在这个地方点击一下鼠标就可以打上断点了,来啊,看一看啊,左键到这里你会发现,哎,是不是给我们自动显示出来了一些黑的点啊。随后呢,咱们 对齐 b 等于什么什么这一句代码,然后打上断点,点击鼠标左键,那打上断点之后,你就会发现,是不是啊,这一句代码就变红了呀?啊,意思就是说呢,程序运行到这一句的时候就会停在这里啊,来,咱们实验一下,点击咱们的运行 哎,你就会发现,是不是在这个地方程序就停下来了呀?然后呢,你看就停到了这一句代码。好,那停到了这一句代码之后,咱们接下来要讲的是继续执行与逐过程执行。 首先咱们讲解一下继续执行,什么叫代码的继续执行呢?他指的是我们如果在这里啊,已经看完了当时的现场数据,我们呢想让程序直接开始向下执行啊,不用一句一句的执行了,直接往下走吧。那么我们只需要点击哎上面的这个继续就 可以了,或者说呢,咱们也可以点击快捷建设 f 五,在这里呢,大家只需要记住 f 五,然后自己去使用就可以了。 那我呢,由于正在进行录屏,然后我的 f 五应该是啊这个快捷键有冲突,所以就不给大家去演示 f 五了。但大家知道在此时呢,点击 f 五这个程序啊,就直接越过这个断点呼呼的向下跑了啊,给大家演示一下点击继续, 你看这样的话,程序直接就进行完毕了哈。好,那接下来呢,再给大家演示一下一句一句执行代码,比如说啊,咱们直接把断点打在最开始的这句代码上,随后咱们直接点击启动程序。 到这里之后呢,我们应该如何一句一句向下执行呢?你看如果我点击继续执行的话,他是不是直接你看 直接就执行完毕了呀?啊?他不会说一句一句走,对吧?所以说呢,咱们肯定得要用别的方法啊,他断在这里之后呢,哎,咱们在这里有一些执行的办法,这些小按钮 其中有一个叫做逐过程,来,我把鼠标放上去啊,你看这个叫做逐过程,它的快捷键是 f 十 啊,在这里呢, f 十。我这边有一些热键的冲突啊,就不给大家去演示了,我直接用鼠标点击这个按钮向下一句一句执行,那大家呢,可以使用 f 十这个快捷键,一句一句向下执行。好了,你看我点击逐过程,你看他就跑到了 a 加加这一句上来了啊,然后我再点击逐过程,那他又跑到下一句来了, 那他没往下走一下,是不是就是执行一句代码的意思啊?那如果说他停在了这一句代码上,是不是表明这句代码还没有执行啊?是不是我们要 再点击下 f 十,或者点击逐过程往下之后,哎,这一代码才能够执行完毕啊?好了,那这就是关于咱们的继续执行与逐过程执行,当然还有一个叫做逐语句执行啊,就是说那他和咱们的 f 十比较相似, 那只有讲到咱们方法啊,这样一个模块的知识的时候,才会用到那种调试办法,到时候呢咱们再讲啊。好了, 那到了最后一句的话,我们是不是可以继续点击 f 十呢?或者点击上面的按钮走,哎,他就跑到了这个口号这边,然后预备要结束程序,那此时呢,你想说啊,我不想一句一句走了,我想直接你往下走吧,啊,就直接放开你了。好,那点击继续即可,或者点击 f 五。 接下来呢,我们来给大家介绍一下如何呢?在断点啊,停住之后,我们来观察观察程序的 现场。好,我们先把程序运行起来啊,运行起来之后呢,你会发现,哎,是不是代码先停在了这一句啊?好,那请问停在这一句的时候, a 等于十,这句代码执行了吗?哎,并没有执行,对吗?既然没有执行的话, a 现在的值请问等于多少呢? 咱们想一想,是不是他应该等于默认值啊,而默认值是不是零啊?好了,那咱们应该如何在断点停住的时候去查看 a 变量的值呢?有两种方法,第一种方法,咱们把鼠标啊移到 a 变量上,你会发现,哎,给大家弄清晰一点啊, 在这里会有一个 a, 然后零,你会发现 a 就等于零,对吧?好,在这里啊,可能不太清晰啊,因为我一放大呢,他就变得呃虚无了。好吧,那大家呢,可以在 自己的程序里面这样去试一试啊,就是说第一种把鼠标放在 a 这个变量上面,你看他就会出现 a 和零啊。 ok, 接下来呢,我们还有一种方法是这样的,我们去到下方,下面啊,有一些观察的窗口,比如说呢,有局部变量窗口,有自动窗口,还有监视窗口, 咱们啊,默认情况下,在自动窗口这边,所谓自动窗口就是程序执行到这一句的时候啊,那我乘着咱这个 vs, 他认为你会关心哪些变量?好,你可以看到这边有个 a 变量,对吗?然后他的值是零啊,因为现在十并没有复制给他。好,接下来我们往下走一句, 点击 f 十逐过程执行啊,然后呢,这一句代码是不是已经执行完了呀?接下来 a 加加这句代码还并没有执行,此时我们再把鼠标放到 a 上,你会发现此时 a 变成了十,然后呢,我们再去到自动窗口这边,看一看, aa 是不是已经变成了十啊?而且这个十是红色的十,说明刚刚,哎,上一句代码的时候,对这个 a 变量进行了更改的意思啊。好, 那接下来呢,我们再往下继续逐过程执行。好,此时 a 加加执行了 a 加加执行完毕之后, a 是不是应该是十一啊?来,我们把把这个鼠标啊放到 a 上面去看一下,哎,果然是十一啊,你看这边有一个十一哈, 那接下来呢,我们再往下走,看一看自动窗口这边,哎,是不是 a 已经变成了什么呀?十一,好, 那此时呢,我们的光标啊已经运行到这个地方了,运到这里的话呢,我们是不是产生了一个变量 b 啊?但是 b 等于后面这个表达式,那是必须是要这一句代码执行完毕之后,那 b 才能等, 等于后面的结果,而此时这一代码还并没有执行,对吗?他停在了这一代码上,所以说 b 现在应该是默认值为零。好,把鼠标放上去看 b 是不是为零啊?好,那接下来我们去到下面看自动窗口这边,哎,这个 b 这个变量已经有了,对吗? 那是因为咱们的程序已经执行到了,哎,把这个 int be 它声明的地方。好,那这里 be 它的值是零。那经过这句话之后,来我们往下再走一句啊, f 十 走完之后呢, b 是不是应该有值了呀?哎, b 应该等于多少啊? a 加上加加 a, 那是不是应该先计算这边一个操作数啊?这边的操作数是几啊?是不是刚才的十一啊?十一加上一个什么呢?前加加 a, 前加加一,是将 a 先加一,再参与到运算当中,所以说这个加号左边是什么?左边是不是十一啊?而右边呢?应该是什么?十 二加起来应该是二十三,所以 b 应该变成了二十三,你看没有问题啊, b 变成了二十三。好,我们接下来接下来看这个自动窗口这边啊, b 是二十三,没有问题哈。 好,那接下来呢,我们不想去看这些数据了,我们想直接放行怎么办呢?点击继续或者点击 f 五啊,直接就走开了啊。好了,咱们把这个断点先拿掉 好了,那咱们接下来看一看,一个程序能不能打多个断点呀?哎,其实是可以打多个断点的,比如说咱们在第一句这边打一个断点,然后呢,咱们在哎 b 声明的这个地方,咱们也打个断点好了。那此时我们运行程序啊, 运行程序之后呢,我们停在了硬台 a 等于十这一行,假设我们现在观察完了现场,想直接放行,说你继续往下走吧,我们是不是应该点击上面的这个继续啊,或者直接点击快捷键 f 五啊?好,我们直接点击继续看一下 发生了什么啊?走,哎,你会发现他是不是直接停到了下一个断点啊?所以说呢,我们刚才所谓的继续执行以及这个 f 五,他的意思是说从当前这个断点开始,直接把把程序放行, 但是如果说下面还有断点的时候,他还会停在下面的断点上啊,就说他不会越过下一个断点,好,你再点击继续的时候,是不是程序,哎,你看,就置行完毕了呀,因为在咱们第二句断点代码上面啊,他的下面的话是并没有其他断点的,所以说可以直接往下走。 好,那这就是有两个断点的情况,那有同学会不禁发问啊,说,学了这些东西之后,我们应该怎样在 debug 的时候去使用呢?啊?再给大家说一个简单的场景啊,比如说呢,我们当前这个 b 啊,最终经过计算,你 想象当中啊,或者说你的预期应该是输出二十二,但是呢,刚才说了啊,结果却输出了二十三,那此时的话是不是产生了疑问啊? 哎,产生了疑问,那为什么会输出二十三呢?你不知道啊,你觉得啊,比假设说,你觉得上面这个过程,哎,他应该输出二十二啊,那怎么就输出了个二十三呢?于是乎啊,你一句一句的去 debug 啊,你就在这打个断点,我说我看一看到底发生了什么吧, 好,开始运行,你发现此时 a 等于零,没问题啊,然后你跑到下一句上,发现 a 等于十,哎,如你所料,没有问题啊,那此时 a 加加了,然后再往下走一句,再往下走一句呢, a 等于十一,假设到这里,一切都如你所料,哎,确实啊, a 就应该等于十一,然后呢,你在进行最后一句代码的时候,你就觉得,哦,可能就在这句话上出错了,为什么呢?因为你看啊,刚才 a 等于十一,假设这一切都是和你想象中一样的,那只有在这句话上可能就会不一样了。 好,那这时候你就发现哦,你看这个地方,我可能写错了,我本来呢是应该写成 a 加加的, 这样的话不就变成了二十二了,结果我写成加加 a 了,你看,这就不对了啊,你看我现在把它停掉,停掉之后呢,我把这个加加放在这个 a 的后面啊,让它成为后置加加,然后我再运行,你看二十二就出来了。 所以说啊,咱们这个查 bug 的过程,就可以一句一句代码执行,看一下每一句代码是否呢,跟咱们预期 是一样的,一旦发生了跟咱们预期不一样的情况,就大概知道了啊,缩小这个范围啊,你看上面都是对的啊,然后这边只是个简单的输出,所以说问题一定集中在这一句上了。好, 那咱们的程序啊,现在都是比较简单的啊,那随着咱们后面代码的深入,可以带着大家做更多的这种 debug 的练习哈。 接下来呢,咱们来讲最后一个知识点,就是条件断点。那什么叫条件断点呢?你看咱们如果在这里啊,打上一个断点, 那此时无论如何,只要程序经过这句话的时候,是不是都会在这里啊,被被迫停止啊?好,那有没有一种情况说,嗯,我想说,这个断点啊,在某些变量满足某些条件的时候才会停下来。我举个简单的例子,比如说咱们仍然在这里打上一个断点, 我说啊,此时如果 a 来,我写在这里啊,条件,条件是什么呢?咱们的当前的这个 a 必须是大于十五的情况下才会啊,挺下来。 好,那现在是不是不管 a 是怎样的值,他都会在 b 声明的这句代码上停下来呀?好了,接下来啊,我们在这个断点上,呃,点击咱们的鼠标右键,点击鼠标右键之后,你会发现这边有一个条件,然后点击这个条件。 好,点击条件之后呢,你会发现他出现了一系列的选项啊,咱们来讲一讲,说啊,你在这里这个框框里可以输入一个条件,哎,这个条件是不是就是最简单的那种啊?关系表达式或者逻辑表达式,哎,那这个表达式是不是最后的结果要么是个处, 要么是个 boss 呀?好,那他为处的时候,我们才让这个断点停下来啊,就是这么个意思啊。好,咱们先在这里啊,给大家示范一下, a 大于十五的时候才会停下来,咱们输入 a 大于十五,然后呢点击关闭。 此时呢,你会发现这样一个断点上面有个小的加号,代表着当前断点已经是一个条件断点了。来,我们直接运行,看一下,会不会在这里停下来呢?理论上讲的话,此时 a 加加之后才是十一呢,所以说他应该不会停下来, 你看程序直接最终输出二十二啊,并没有停下来。好,现在咱们把条件断点的条件给他改变一下,然而是右键断点,然后点击条件,这个地方呢,咱们不用 a 大于十五了,咱们用 a 啊,啊,只需要大于十就可以了,来,咱们看一看啊, a 大于十就 能够在这个断点上停下来,点击关闭,那我们看此时 a 等于十,然后 a 加加之后是什么呀? a 就是十一了,那他运行到这句代码的时候,会首先进行条件的判断,看一下是不是 a 要大于十啊, a 大于十的时候是不是断点就在这里停下来了呢?来咱们实验一下, 是不是应该,哎挺在这里啊,因为呢,当前的 a 的值是十一,所以说是满足啊, a 大于咱们十, a 大于十啊这个条件呢,所以他就停下来了。好了,那我们点击继续啊,放行程序 好取消掉断点。 ok, 在这里呢,咱们关于调试的三个技巧都给大家讲完了啊, 这些调试的技巧呢,都是属于比较简单的技巧,那在程序稍微复杂的时候呢,希望大家能够灵活运用,咱们在后面也会看到一些关于调试的用法啊。行,那关于调试咱们就给大家讲到这里。

接下去呢,我们继续讲解会变语言中的查看 cpu 和内存,机器指令和会边指令,变成二点一点零第八个的使用。 第八个呢,是我们会编调试的一个程序, 我们以后所有的试验中多见用到第八个程序,用它来调试我们会编的整个程序。 什么是八第八个呢?第八个是 doors windows 多提供的施模式啊,八零八六这个程序的调试工具,他是一个调试的工具, 使用它可以查看 cpu 各种继承器中的内容,内存的情况,或在机器码及跟踪程序的运行, 他就是调试跟踪程序,如果你学过高级语言的话,那么他也有调试跟踪的这个工具, 那么具体我们一会呢,再进行 操作的时候呢,慢慢的啊,一步一步的去了解他。第二, 我们用到的第八个的功能啊,在这里呢,先简单的讲一下, 第八个呢,有很多仓送,他有二 d, e、 u、 t a 啊,这这么几个仓送啊,这里呢,我们一个一个去记呢,肯定记不住的 啊,在这里呢,先简单的啊,做一下说明。第八个啊,命令查看改变 cpu 继承题的内容。第八个 d 命令,查看内存中的内容。第八个的一,命令改写内存中的内容。 哪个有命令将旅程中的机器指定防疫层回变指令。 第八个 t, 直行一条指令,机器指令其实就是跟踪。第八个 a, 可以汇编指令,以汇编指令的格式在内存中吸吸入一条机器指令 啊,可以用第八个呢,仔细进行一段会编指令的啊编程。然后呢,我们可以用这个替命令呢,对他进行挑事。 三,进入第八个 还有呢用啊命令 查看 cpu 继承期的内容,这个我们前面一二呢,我们那如果记不住呢,也没什么关系,进入第八个呢,这个呢 怎么进啊?我们来看一下,那么在进入第八个之前呢,我们先要运行到死的啊窗口,然后呢再用第八个应用程序呢, 进入第八个模式,我们来试试看啊, 那么我们这个系统呢,是这个人都是死的系统, 所以呢,我们要在都市博克斯啊,零点七四杠三啊,这个都是模拟都市当中运行, 那么我们来运行他 就是这个应用程序,好看他的提示,他是指向 d 旁下面的一个 a s m 下划线 src 的一个目录,我们以后编写的这个会编原程序呢,它存在这个目录下面啊,这个文件加下面这个文件下,下面 还带有三个文件,应用程序,第八个呢,已在其中,那么刚才我们捡到什么呢?这个第八个怎么进入,进入第八个, 进入第八个呢,就直接输入第一 b ug 啊,然后回车,这样呢就进入第八个模式, 接下来呢我们主调啊,对这个命令参数呢进行剪辑 啊。第四,用二命令查看修改 cpu 继承题的内容啊,先减二,二减了我们减 dd, 然后 euta 啊每个,我们对 每一个命令参数呢进行呢捡起啊,详细的捡起以后呢,我们这个第八个调试应用程序,调试会变应用程序的时候呢,会经常用到啊这些命令,所以说这个最好呢,掌握好。 好了我们开始讲,先第一个用二命令查看修改 cpu 继承器的内容, 命令格式啊,继承器啊就可以对他进行修改,那么这是修改内容,那如果是查看的话呢, 我们可以呢直接输入啊啊直接输入啊啊小写啊, 一般呢我们消息比较好,这样呢就可以查看继承器的内容,会编中这个查杠出来的啊,这个继承器啊各种东西,如果这里的啊一行两行三行这三行差不多 你掌握好的话呢,就会编哦,简单的一些英文程序呢,我们差不多就会了, 比如说这里大概有二三十个啊,二十三十二三十个东西能掌握好的话呢 啊,那你对这个汇编呢已经具备一定的基础,那么刚才捡到呢 啊啊什么意思呢啊?是 查看啊,命令是查看或者改变 cpu 继承期的内容, 那现在呢我们打一个二回车,那这样就是查看继承题的内容,其实我们讲过几个通用继承器, ax, bx, cx, dx, 还有呢? ip, 还有 ip, 还有个还有个继承器断继承器 cs, 这个是代码继承器啊,代码断, 总共呢我们捡了六个啊,捡了六个,当时还没有对这六个呢啊进行具体的了 了解啊,以后呢慢慢的会深入了解。那么现在我们先所讲的是这个第八个的命令场所啊,是什么意思呢?查看或修改继承期的内容 啊,比如我们啊后面跟上一个继承器, 跟上一个计程器 c s, 现在 c s 等于零七三 f, 如果我们要改变这个计程器的内容,那么怎么做呢? 那么就是啊空格,然后呢 cs 啊 cs, 然后呢回车,这样的话呢,这 cs 原地址是零七三 f, 现在茂名,后面呢就是叫我们输入呢目标的一个地址, 目标的一个地址,那么我们比如说速度零七三零 零七三零啊,输入之后呢回车,那这样的话呢, 我们这个 cs 的断地值就变成了零七三零, 也就是意味着对这个 cs 继承期他的地址零七三 f 呢做了修改啊,我们再看一下啊,通过二来查看一下继承期啊,他就改变了啊,把这个继承期呢他的段地址呢 做了修改。 这个段是什么意思呢?我们前面一讲过啊,与这个 cs 是代码段 啊,我们所运行的指令呢,全部在这个代码段当中。段地址的改变说明呢,我们对段的原程序呢进行了切换啊,因为修改的话呢,他就现在是从零七三零 这个段林免执行我们的这个原程序啊, 至至于里面有什么内容呢,现在我们不清楚的啊,现在我们不清楚的 啊,一般情况下呢,如果我们没有编辑任何程序的话呢,那就是空的啊,那就是空的。那一稍后呢我们再进行讲解。怎么样查看啊?一个段里面的内容 啊,这是查看或者修改这个计程器的内容,那如果我们 更改这个 a x 里面的内容,看看能不能更改,那就是二跟 后面 ax 啊,在计程器它里面原先原内容是四个零,那我们改成零零零幺回车好了,再啊查看一下啊,里面的内容呢,也的确呢做了修改, 那么我们来改一下 ip 总的内容啊, ip, ip 值什么呢? ip 值 一个程序运行到某一个位置,记录这个位置的一个地址 啊,这个 ip 就是指针指向当前程序运行的那位置 的话呢,他是零幺零零,那我们可以改成零幺零幺啊,也可以啊,然后呢啊,查看一下,他就对这个 ip 呢进行更改, 这是我们第八个的二命令。 那接下来呢,我们看下一页 啊,这个二零零呢,是这样的,我们刚才做过说明啊,再看下面 啊,命令啊, a s 啊,可以更改啊, 啊,这个也说过啊,啊,命令修改 ip 零幺零幺也说过这些,看下面, 接下来呢,我们来看一下第八个的第一命令,查看内存中的内容, 那么我们刚才所说 cs, 他等于一个地址,如果查看这个地址里面的内容,那我们应该怎么查看? 依照这个我们的图二点八。

bz 第八个,从上到下一共四颗 led 灯,对应 cpu、 内存、显卡与启动。 cpu 红灯常亮,代表着 cpu 护照、主板八片、供电没插或 cpu 没有安好 表。概率 cpu 本身的问题排查的话,一般只能通过更换配件来测试。 drum 代表内存, drum 灯常亮意味着内存故障,内存 本身有质量问题或者兼容性问题,或者没有安装好。小概率 cpu 里的内存控制器出现故障,一般可以通过单插其他插槽来判断是内存还是主板还是 cpu 问题。内存灯亮应该是这四个灯里最难判断的问题了,大叔看到内存灯亮,有时候也会挠头,因为 cpu、 主板内存有问题,这个灯都会亮,所以只能用替换法来最终判断故障点在哪里。 vga 灯亮代表显卡 显卡本身出了问题,没有安装好显卡供电没有差,小概率新主板遇老显卡也会亮,老牛吃不动嫩草造成的 卡。 vga 灯时,可以尝试更换 pcie 插槽来测试是否插槽本身故障。如果电脑时间长了,拔下显卡用橡皮擦擦拭显卡金手指。大叔见过显示器和主机不兼容也会亮。 vga 灯换个显示器就好了。奇葩问题。

大家好啊,今天我们一起来调一个 bug, 这个是一小伙伴发来的呆萌,我们先把它解压一下,然后呢,这是一个前端项目,我们先把它 npm 依次到一下, 然后我们再用 vs 扣子打开它 大一点,看一下派克纸脚本是色,我们把它刨起来哈,然后我们反问一下,那这是一个移动端的项目,我们把它切成移动端实图, 然后呢,应该是这个分类啊,他的意思是往下滑动哈,滑动到最下面的时候 没法再滚动了,他现在这个效果导致就是左侧这个菜单没法选中最后两个,但是据他描述呢,他为了让他能滚动下去,他在最底下其实放了一个空的 dna v, 我们可以用这个猫兔儿斯里边有一个雷尔斯,然后把它缩小一点儿, 我们能看出来其实下边是还有内容,但是感觉上就像是我们滚动上去之后好像有加速 celop 又给变回来了,所以我们先把加速 celoe 金用一下,看一下也不行,这样的话他就滚动不了了。我们看一下 warflow 川字类的外,大家看我把这川字类的外改成零,然后他就跑到最上面了, 然后川 celete y 等于服务一百看看他又往下滚一点,所以他这块滚动的原理应该是用了一个组件,然后这个组件会监控鼠标的手势来修改这个川 celete y 的值。我们再把加速课本启用起来看一下宾利不 打开这块就变了,所以那这块我们先把它再禁用一下,然后呢,我先把川字列的 wy 再改成零, 然后他现在滚动不了,肯定是外层这个容器这个 dmv 导致的,他没有这个 overflow, 我们把它加一个 overflow, 凹头打开出来了,滚动点也出来了, 而且他滚动是可以滚动到最下边的。来看一下那这个空白的 div, 就是他加的这个 div 高度是五百九十六,所以我们先来看一下这个 div 在哪设置的高度吧。 把这个关掉,页面是 salt, 然后我们找到这个容器,在这 看他在那设置的高,在这配的等于等于这个容器的高度除以一点二, 除以一点二,相当于百分之八十三左右。那他为啥这样呢?按他们例子的 那个吗? my new right, 看到 my new right 这儿 一个左一个右,相当于他在最后加的空白的容器的高度是整个这个高度的百分之八十啊,这样的话相当于他就是即使滚动到最下边也能上面露出来一点, 给他弄了个除以点,其实相当于乘以零点八左右也可以。好,先不管他,我们继续看, 然后他在这设置的高度,我们看他这个高度在哪个方法, 这个方法,然后这个方法在在这调用,然后上面出纸画 battes go, 我们把它来对调一下,看一下。刷新啊,加斯 q 刷新, 哎,可以了,打开 没问题了,所以他这个应该就是,原来是这样的吗?应该就是他在出主化 battes go 下边那个空白的容器还没有被添加进来,所以白特斯告就认为最高的高度是不包含下边这块空白的区域的,就下边这块区域,所以我们要 把它对调一下顺序就好了,但是呢,我们还是确认一下这个,嗯, rethit 这里边除了设置最下边的高度还干啥了? 嗯,这两块还他妈瑞 获取每一个 kit。 kit 是什么啊?这一个分类,一个分类就是一 k, 然后每个分类循环,每个分类的高度加一个总和,然后把总和 啊,这个应该不影响,我们把它放到上面直行,也不影响,所以这块就这样解决一下就行了。把这个高度放上面去触手画,然后再去触手画这个百特斯高这个组件,这样就没问题了。好,今天就到这里,谢谢大家,再见。

观前提醒,本视频全由阿布书本人手打制作,如有错误欢迎指出。由于视频消耗时间过长,如果有帮助的话请点赞投币,这对我真的很重要。另外后续会间不间断更新 word boss, 如果喜欢的话可以关注一下。

电脑突然点不亮,该如何去排查硬件呢?不知道你开机时有没有注意到主板上的灯光,好多主板一般会有第八个灯来显示硬件的自检一般分为三种指示形式,最常见的第八个灯指示高端主板的数字灯芯指示 几乎淘汰的语音形知识。拿最常见的第八个灯举例,一般会在主板二十四平旁边靠近边缘的位置,四颗灯依次亮起并且熄灭,就说明自检通过。 某一个硬件有问题,对应的灯光就会卡在常亮,依次分别对应 cpu、 内存、显卡和硬盘。可以按照对应第八个灯常亮指示来排查硬件。 常开机点不亮,最常见的是内存的问题,其他问题更多的会出现在装机的时候。数字灯型的指示会更加详细,可以参照常见的代码指令。特殊情况建议度娘搜索或者是咨询官方的客服。

主板上这个东西平时不起眼,电脑一旦出现问题的时候就起到大作用,那就是 dbug 灯,一般有四个 led 灯珠,作用就是质检提示各个硬件的工作状态,分别为 cpu、 dram、 v gaboot, 一旦长亮就代表这部分用电出现问题,方便排查解决。如果 cpu 灯常亮,就要查看你的 cpu 供电是否插好, p o 是否安装到位, c p o 的针脚是否损坏。 dram 常亮就代表内存没过,这时候要看你的内存是否插好,确认内存是否损坏,是否和主板兼容。 vga 常亮有独立显卡的情况下,你要查看一下你显卡的供电以及显卡本身是否插紧。 uot 常亮大概率是你的启动项出现问题,或者查看你的硬盘是否差紧。还有一种可能就是你的视频输出线和显卡输出接口不兼容导致,可以更换线材试试。 如果你的电脑已经按我上述方法进行操作还没有解决,那就别整了,抓紧时间联系售后吧,我是搞基化师傅,下期视频再见!

公子智慧的播出,呃,因为我们要给学员讲这个会编语言,呃,打算刚开始打算是中一个训练机,然后在训练师中一个倒字系统,后来在网上找了一下,有一个叫这个 dousbox 的一个软件,嗯,可以在苹果运行 非常轻的几个,给大家演示一下啊,装上了以后直接运行,然后第二啊,给倒数操作是一模一样的,倒数面料一样的,咱们挂在一个盘 mond, 哎,这个波棱号是我登遣目录,然后刚才见了一个目录叫 m a s m 大会车,好,直接转个 c 吧 dr 看一下, 是不是啊?这是我刚才把这个违建考进去,里边有第八个,是不是咱们也很熟悉啊,咱们微信下第八个啊,看下个计算器啊, axbxcxdx, 看, 这就是两个字节的是吧,他是一个十六位的一个实时系统, cs 短期对七 ip 是一个偏移,是吧,我们利用看一下啊,这个东西看不懂啊,会编啊,哎,咱们写一句会编 还会 axxxxxxx 一斤好看。这个 这个跟前这个段地址执行这个代码段,就是刚才咱们输入这个是不是就 ok 了,可以退出,好,今天就给大家讲到这啊。

哈喽,大家好,我是鱼仔,上期视频介绍了 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 技术一定会强大不少。以上就是本期视频的全部内容了,我是鱼仔,我们下期再见。

大家好,本节我们来给大家分享迪 bug 和瑞丽丝的差别是什么。然后在这个课程讲解之前,我先给大家做一个自我介绍,我叫肖玲,我是一名自动驾驶算法工程师,是深度学习集团级视觉实战和学校彭 cb 四 基于拍损的算法实战作者,毕业于中国科技大学。我的分享主要包括自动驾驶斯大姆深度学习计算机视觉私家和拍损编程以及面试求职相关的一个知识。 然后就是迪 bug 和瑞丽丝,就是我们编译的时候经常需要有选择的一个编译模式,他们俩的差别的什么?就是迪 bug 的话,我们上爷爷讲过,他就属于一个调试模式,他会保留,就是编译的时候编译器其实本身会对程序做优化,但是如果你选择的是调试模式迪 bug 的话,他就不会 把一些中间过程进行一个优化,然后你在调试的过程中就能看到一些中间的一个变量,否则的话中间变量可能会被调变异器进行优化,你就看不到了,所以这个用于调试的过程。然后是历史的话,其实主要用于代码的或者程序的一个发行, 就是最终交给用户的一个程序。编译器呢会根据你的需求,像这个地方你选择最大速度优化还是最大就是优化大小这两种方式, 然后呢他就会给你做一个优化,提高你的程序的执行效率。这个地方可以在那个项目选择的时候,属性业里面进行一个配置,在属性业里面的配置属性,然后就是里面可以选择 ccc 家,然后优化就可以选择你想进行什么方式的一个优化。然后呢?最好 后的话就是瑞丽丝其实就是一个小巧精悍啊,非常纯粹给用户使用的版本。第八个的话,你就方便于程序员进行一个代码的一个调试,如果你编译的是瑞丽丝版本的话,其实不太用,不太方便进一个调试。 然后编辑第八个版本的话,会生成那个 pdb 文件,就是调试符号表文件。 然后就是如果你使用思魅可进行一个代码编译的时候呢,可以在这后面加上思魅,就是加上选项杠地思魅可标的太普,等于迪 bug 就可以编译迪。嗯,那个迪 bug 模式,如果编译的属于历史模式,把这个迪 bug 改成于历史就可以了。 然后如果你觉得喜欢我的讲解,请帮忙点个关注,点个赞,谢谢大家,本节内容就到此结束。

好的观众朋友,那么今天来分享一下小马呢,他是平时如何去解决一些 bug 或者是处理一些问题。那第一个的话肯定是使用这个某度啊,去搜索一下相关的一些资料,或者什么某狗啊,什么某六零啊等等去搜索相关资料, 那如果找不到的话,就会进行升级去这个 stock overflow, 因为这个呢是纯英文的,但是 里边呢是与这个国际化呢,就是大部分呢你遇到的问题啊,这里边都有,只要呢你搜索的恰当,这基本呢都能找到。这是我之前呢遇到一个非常冷门的一个问题,哎,居然在里边找到了,是一个关于一个 price 的一个问题,对,在这里边居然有解,也是让我非常欣慰啊。 那你如果看不懂英文的话,你还可以进行这个问这个人工的 ai 啊,就比如说这个 chart g p t 这个的话我也是经常问,大家 可以看到我已经问了他无数个问题了,但是呢,他回答的始终是不对呀,这的话我问了他 n g 可是四层 l b 负载均衡是怎么做的,他就给回答了一个七层 s l b 负载均衡的一个模型,这个是有有问题的,对, 这有问题的,如果是这个刚接触这个 ngx 的话,可能就直接拿过去用了,但是他这个答案是不对的,对,是外面少了一层这个死坠嘛,所以说他这个四层 lb 负载均衡是有问题的,他回答了一个是七层 slb 的负载均衡, 对这个是有问题的,当然他所提供这些呢,只能是去参考一下,大家对还是建议的话,还是不要去照抄啊,因为有的东西是有些问题的啊,比如说我问的这个呢,他就是有问题的。然后呢再生理的话,我们可以去 github 呢,去提一些相关的 inter, 这里话我也是 经常给他们提一些问题啊,然后现在这些问题都已经被关掉了,一先呢是被解决了,一先的话是被这个长时间没人管就被关掉了, 比如 i will。 对, i will 的话,我记得好像是长时间没人管,自己给我关掉了。对,我问了这个问题,没有人理我。这个社区呢,可看起来不是很活跃,但是其他的问题呢,都是关掉了,比如说这个 vue 的相关营养问题,我还给这个 vs code 去提供一个 bug, 好不了,我们来看一下。哎,这的话发现这个颜色是错乱了,大家可以看到,对,就是鞋带把这个颜色去错乱了,然后呢,我还以为是 vs code 的一个问题,然后我就去给 vs code 提了一个 bug, 然后呢他说你去把这个扩展的去给他禁用掉试试。然后呢我把这个这个 viewer 就是我们这个 view 删了,这个 vivola 去给它禁用掉的时候呢,发现好使了,然后呢,我就觉得那这个东西肯定是 vivola 的一个 bug, 然后呢我就立马去给这个 vivola 去提了一个 bug, 哎,发现就是这个东西错乱是因为 vivola 去导致的。哎,发现好多这个国际友人呢,也遇到了这些问题。 对,所以说可以通过伊水尔跟这个全国各地的一些这个程序员呢去进行一些交流。这是一位来自巴西的一位朋友啊,然后这个头像不用看了,绝对是中国人。呃,然后这个是哪里人?这个好像是没有写吧? 对,反正全国各地人都有,他们都会遇到各种这个差不多的问题。这是作者,作者去回复了,作者是一个香港啊,中国香港。然后呢,他已经把这个问题呢去已经 fix 掉了。 对,所以说每一个这种插进或者看圆库的背后呢,都需要我们这些人大量的去给他进行维护,去给他提供这些 easter, 提些 bug。 ok, 如果这些都解决不了你的问题的话,那只能开启看圆马大法了。 对,我一般的话也有时候直接会去调试一下这一些原码,那这个的话就是 v v 的原码,我也是经常去调试它。 首先我们需要使用这个 p n p m 呢去装一下这个依赖啊,然后呢去启动一下它这个 d u a 模式,它会生成一个 dist 目录下面的一个 格罗布点 g s, 然后呢我们在这个 s r c 下面的新建一个 index 点 h t m l 去引入一下这个格罗布 g s, 然后通过 leave server 给它打开就可以了。对,这是我经常去调试一个 v v 的原码,然后这是在调 是一个地步算法,得看地步算法是怎么运作的。然后打开这个 shots, 然后呢,比如说你想在看的一个位置呢,去打一个断点就好了,然后点击这个地步, 然后呢你就可以看到他的输入,输出什么 c 一 c 二,那些乱七八糟的是什么东西,然后呢去进行一个调试就可以了。哎,以上的话就是我的一个调试一些方法啊。

如何通过 debug 灯快速判断电脑故障?以微信主板为例, cpu duramevj、 boot 分别代表四种含义, cpu 灯亮时有可能是 cpu 损坏、弯针供电问题等等。 你专门灯亮时,有可能是内存或者插头问题,或者是 cp 弯针等等。 vj 灯亮时有可能是显卡问题,也有可能是数据线的连接问题。步特灯亮但是无法进入系统,一般是启动设备问题。

成员工作中常说的词就是 bug, bug 是英文,就是虫子的意思。 bug 算是成语员的行话,指的是程序中的错误或者软件中的缺陷或故障。 八哥,这个词是怎么由来的呢?话说七十多年前,那时候计算机的元气件很大,整个计算机有半间屋子那么大。 一九四七年九月九日,有个叫格雷斯贺博的女工程师发现计算机发生了故障,经过排查,发现是一只飞蛾飞进电路板,卡在继电器上。格雷斯就把飞蛾拍死,拿出来定在工作日志上,还在旁边写道, 就是这只该死的 bug, 害得我今天工作没有完成。这不是杜传,这只飞蛾和工作日志现在还保存在计算机博物馆里。从此 bug 就成了程序员的宿敌。 bug 还排成出一个词, dbug, 排除软件故障的过程,也就是去除 bug 的过程,从此就叫 dbug。