写点什么

Chrome Devtools 调试小技巧

作者:百度Geek说
  • 2022 年 5 月 12 日
  • 本文字数:1890 字

    阅读完需:约 6 分钟

Chrome Devtools调试小技巧

对于程序员而言,熟练掌握 debug 工具和方法无疑是工作中很重要的一部分,而对前端开发工程师来说 Chrome Devtools 是最为常见的调试工具,本文主要介绍一些使用 Chrome Devtools 的调试技巧,希望能够帮助开发者们提高 Debug 水平。

01 样式调试



1. 快速新增/修改 class:选中 dom 中,点击右侧的 .cls 激活后,可以通过选择框对现有的 class 进行删减以及通过输入框新增 class。



2. 查看计算后的样式:在开发中有一些样式可能是需要通过计算才能得到实际的值的,比如 rem,百分比的数值等,而且可能还存在优先级不同导致互相覆盖的情况。这时候如果我们想看到它在页面中的实际数值时,可以在选中 dom 后通过 computed 去看到这个元素的实际尺寸,以及点开尺寸后看到它生效的样式。



3. 颜色选择/取色器:在调试 css 时候,可能需要去调试一些颜色相关的数值,chrome 提供的颜色选择器可以更为方便的去选择颜色,同时也提供了取色器能够在页面中选取需要的颜色。


02 功能调试

1. 环境配置:在开发过程中我们可以需要在一些特定的环境下去定位和复现问题,chrome 提供了一系列的配置,比如:设备型号(UA)、屏幕宽高、网络环境等等。



2. 优化 source/network 展示:当我们需要查看该页面的原始文件时,在 source 中可能会比较难以找到,此时我们可以修改下他的显示方式,如下图将 Group by folder 去掉,他就会改为平铺的进行展示,从而能够更加方便的找到你想要的文件。同样在 network 栏里面,我们也可以修改他的排列顺序,比如点击 Name 就会让它根据 name 的首字母进行排序。



3. 复制数据、复制请求:当涉及到一些数据和请求的问题时,我们可以需要把对应的数据和请求复制下来,再进一步根据这个数据和请求去进行定位,chrome 提供了比较方便的复制方法,比如在控制台输入 copy 即可把数据复制到剪切板,而对于请求,我们在 network 中对这个请求点击右键,就可以方便的将其复制为 fetch 或者 cURL。



03Node.js 调试



除了前端页面之外,我们还可以利用 chrome Devtools 对我们的 node 服务进行问题的定位分析 node 运行状态,首先我们可以借助类似 v8-profiler-next


https://github.com/hyj1991/v8-profiler-next),去生成一段时间的代码运行状态,示例代码如下:


'use strict';const fs = require('fs');const v8Profiler = require('v8-profiler-next');const title = 'good-name';
// set generateType 1 to generate new format for cpuprofile// to be compatible with cpuprofile parsing in vscode.v8Profiler.setGenerateType(1);
// ex. 5 mins cpu profilev8Profiler.startProfiling(title, true);setTimeout(() => { const profile = v8Profiler.stopProfiling(title); profile.export(function (error, result) { fs.writeFileSync(`${title}.cpuprofile`, result); profile.delete(); });}, 5 * 60 * 1000);
复制代码


node 环境运行这一段代码后会生成个 profiler 文件,我们就可以将这个文件导入 chrome devtools 去进行分析:



进入到 JavaScript Profiler 之后,点击 load 即可将 profiler 文件导入,就可以进行分析拉。


这里默认的视图是 Heavy 视图,在这个视图下,Devtools 会按照对你的应用的影响程度从高到低,将这些函数列举出来,点击展开能够看到这些列举出来的函数的全路径,方便你去代码中对应的位置进行排查。这里解释两个比较重要的指标,以便让大家能更有针对性地进行排查:


  • Self Time: 此函数本身代码段执行地时间(不包含任何调用)

  • Total Time: 此函数包含了其调用地其它函数总共的执行时间



除此之外,Devtools 还给我们提供了火焰图来进行更多维度的展示,点击左上角可以切换为 Chart 进行展示:



火焰图按照我们的 CPU 采样时间轴进行展示,那么在这里我们更容易看到我们的 Node.js 应用在采样期间 JS 代码的执行行为,其中比较重要的两个指标:


  • Aggregated self time: 在 CPU 采样期间聚合后的此函数本身代码段的执行总时间(不包含其他调用)

  • Aggregated total time: 在 CPU 采样期间聚合后的此函数包含了其调用地其它函数总共的执行总时间


综上,借助于 Chrome devtools 和能够导出当前 Node.js 应用 Javascript 代码运行状态的模块,我们就可以在 nodejs 应用服务异常时,去进行排查和定位分析了。

04 总结

Chrome Devtools 为 WEB 应用以及 Node.js 开发者提供了功能丰富的开发调试工具,本文叙述了部分工具的使用场景和方法。当然,工具只是作为开发的辅助,想要高效率地开发和解决 BUG,还需要在开发实践过程中不断积累并总结经验,才能更加高效的去发现和定位问题。


推荐阅读【技术加油站】系列


人工智能超大规模预训练模型浅谈


揭秘百度智能测试在测试自动生成领域的探索


小程序自动化测试框架原理剖析

用户头像

百度Geek说

关注

百度官方技术账号 2021.01.22 加入

关注我们,带你了解更多百度技术干货。

评论

发布
暂无评论
Chrome Devtools调试小技巧_后端_百度Geek说_InfoQ写作社区