聊聊调试的那些事,超实用!!!

时间:2022-07-25
本文章向大家介绍聊聊调试的那些事,超实用!!!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

今天给大家分享的是开发中调试的那些事,在开发中我们最害怕也是最常见的就是出现bug,然后去修改bug,那么怎么去快速定位bug的位置和原因呢?这个时候调试显得尤为重要,也就是我们平时常说的"打断点"。当然这里说的浏览器是chrome,毕竟"浏览器之多独爱chrome"。

01

先来一波F12

windows快捷键shift+ctrl+J

Mac快捷键Command+Option+J

如上图所示,我们可以看到console的tab切换页,console里面可以看到浏览器报错,警告,日志输出,执行脚本等一些操作。

在上图里我们可以看到console的一些方法,下面我们列举几个我们平时经常用到的做一下阐述:

console.log

console.log("小丑")

这个方法用于在console窗口输出信息,可以接受多个参数,将它们的结果一同输出,当然也可以使用占位符。

平时我们打开上面页面我们可以看到控制台出现这个效果,是怎么实现的呢?

 window.console && window.console.log 
 && (console.log("你在电脑前看这段文字,n写文字的人在百度等你。nN年前你来到了这个世界,nN年后你想改变世界。nn期待你脚踏祥云,n与百度一起改变世界。n"),
 console.log("%c百度2020校园招聘简历提交:http://dwz.cn/XpoFdepe", "color:red"))

占位符主要有:

%s

支持字符

%d或者%i

支持整数

%f

支持浮点

%o

支持对象

%c

支持css字符串

console.info

console.info("提示小丑")

这个方法用于输出提示性信息,同时在输出信息的前面会加一个蓝色图标。

这个蓝色图标,最近谷歌好像更新之后和谐了,IE浏览器这个蓝色图标还正常存在

console.error

console.error("错误")

这个方法是用来输出错误信息的,在最前面会有一个红叉的标志,在最后会显示出错的位置

console.warn

console.warn("警告")

这个方法是用来输出警告信息的,在最前面会有一个黄色标志,表示警告

console.debug

console.debug('debug')

这个方法可以在console窗口输出调试信息

console.clear

console.clear()

这个方式用来清除console窗口信息

console.trace

console.trace()

这个方法是用来跟踪当前执行代码(函数)的运行轨迹,可以直观的看到函数或代码执行的顺序,都不用"打断点"了。

console.assert

console.assert()

这个方法接受两个参数,第一个参数是表达式,第二个参数是字符串,只有当第一个参数是false的时候,才会输出第二个参数,否则不会有结果

console.count

console.count()

这个方法是用于计数,可以输出它被调用了多少次,在开发过程中,我们如果要看这个方法执行了多少次的话,可以很方便的看到

console.dir

console.dir()

这个方法用来对一个对象进行检查,打印出便于阅读和检查的格式

console.time

console.time()

这个方法配合console.timeEnd()可以打印出所消耗的时间

02

Element这个窗口主要进行的是我们dom元素和css布局的调整和修改。

我们可以在右侧Styles里调整dom元素的各种样式,可以在Element中更换图片和dom节点以及节点的状态

我们也可以在Computed里来看所选盒子模型的状态以及去修改dom节点上的样式属性

03

Sources这个窗口就是我们经常"打断点"的地方了,首先我们先看一下这个窗口的信息,我们主要关注的点,一般有这个几个:

我平时经常用的打断点有两种方法: 1、是在我们的代码中debugger;

2、是在浏览器sources中打js断点

总结:

在这两种调试的方法上,原来其实都是一样的,第一种使用一般是在有源码的情况下,我们可以本地直接这样打断点,第二种使用一般是在没有源码的情况下使用,因为这个我们无法在代码里写debugger,我在只能在加载的资源列表里找到对象的代码去手动打断点调试,二者有个共同点就是在代码执行到我们断点处时,我们可以在console的窗口输入我们上面执行的变量以及全局变量,当然下面没有执行的代码或者正在执行的变量是undefined。

注意一个小细节:我们平时在生产或者测试环境看到的源码一般都是压缩版的,宛如天书一般,我们可以使用chrome的小功能,自动把代码整理成可阅读的形式。点击下图的{}即可,没有用过的小伙伴可以试试,别怪小编没有提醒你哦!

04

Network这个窗口主要是用来查看资源加载和网络请求:

controls和Filters这两个的特性见下图:

Overview显示了资源检索时间的时间线,如果看到多条竖线堆叠在一起,就说明这些资源被同时检索

Requsets Table里面主要是页面和后台的请求以及我们加载css.html,以及cdn等。

Summary可以直接看到页面请求的总数,传输的数据总量,加载的时间

需要注意的是:

1、在Request Table中的Size里包括两个size什么意思呢?看下图:

第一个大小是资源传输时的大小,第二个时资源实际的大小,在服务器中一般使用gzip压缩,大大提高了传输的效率,但是gzip压缩只能压缩响应体的内容,只适合返回数据量大的时候使用,如果数据量小的话,有可能导致数据传输的术后大小比实际的大小还要大。

2、Waterfall中蓝色块越大表示加载很缓慢,绿色块越大表示第一个字节响应的时间越长,优化方式一般是减少文件的字节数,比如降低图片的分辨率,去掉无用代码等

参考文献:

1.https://mp.weixin.qq.com/s/X4dQ4NqDF3UmNCZ4nqDX_A

2.https://www.cnblogs.com/wohenxion/p/4478457.html