2023前端调试技巧

news2025/1/11 16:47:47

前端工作中,不仅编码很重要,重现bug,解决bug的能力同样重要。而这些都离不开代码调试。

大厂面试题分享 面试题库

前端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库

PC调试


  • console.log()

在你觉得有问题的代码处,加上一句 console.log() 就好了。然后在开发者工具控制台就可以看到你打印出来的东西了。

  • 断点调试

  • debugger 语句
    在代码中添加 debugger 语句,当代码执行到该语句的时候就会自动断点。

我们需要关注上图红色方框内的七个按钮。从左到右依次标记为a,b,c,d,e,f,g。

  • a: Pause/Resume script execution:暂停/恢复脚本执行(程序执行到下一断点停止),快捷键F8。

  • b: Step over next function call:逐语句执行(跳到下一行),快捷键F10。

  • c: Step into next function call:进入当前函数,快捷键F11。

  • d: Step out of current function:跳出当前执行函数,快捷键F11+Shift。

  • e: Step 和b的作用一致,快捷键F9

  • f: Deactive/Active all breakpoints:关闭/开启所有断点。

  • g: Pause on exceptions:异常情况自动断点设置。

此时,我们在 Scope 面板中可以看到该作用域下变量和函数的信息(鼠标悬浮在对应的变量上也可以看到)方便我们排查问题。

  • 手动断点
    打开开发者工具的 source 面板,在左侧目录树中找到对应的JS文件,在右侧对应文件的行号上单击即可实现断点的添加和删除。在添加断点之后,代码就会在断点处停止执行。

事件断点

在上图中点击 Event Listener Breakpoints ,然后选择我们需要监听的事件。之后当该事件被触发时,浏览器会帮我们自动在相应的js文件代码处打上断点。举个例子:我想在百度首页输入框中输入时,进行断点调试,就可以使用该功能。

请求断点

在上图中点击 XHR/fetch breakpoints ,然后添加对应的请求URL,之后当该请求发送的时候,就会自动断点。还是用百度举例:添加一个请求URL断点,然后刷新页面。

Dom 断点

我们还可以对指定的 dom 节点进行断点设置,根据设置类型的不同,浏览器会在 dom 节点属性变化,子树变化,节点被移除三个时机帮我们进行断点。还是用百度举例:在指定 dom 节点上右击,选择 Break on ,选择对应的时机进行设置

  • 动画调试

工作中肯定会遇到调试动画的场景,为了调试动画,经常一遍又一遍的刷新页面,其实大可不必,有更简单的办法。

  1. 打开开发者面板,开启命令行(Mac: Command+Shift+P ,Windows:Control+Shift+P

输入 Animations ,选择 Show Animations,打开动画检查器

之后在页面发生的动画都会被其捕获,我们就可以在动画检查器中调试动画了

区域1:控制动画的速度和播放;

区域2:捕获的页面动画;

区域3:动画的时间线;

区域4:动画的实现细节;

我们可以很方便的在这里将动画调试到满意的程度,然后复制对应的动画属性参数到代码中。

移动端H5调试


移动端H5本地调试和PC调试完全一样,我们在此讨论的是在webview中如何调试。

  • vConsole

移动端H5页面运行在App的 webview 内,没有开发者工具可以让我们方便的调试(比如查看log,抓网络请求,查看cookie,Ua等等);因此 vConsole 等这类调试工具就产生了,让我们的调试变得方便了很多。

  • 手机连接电脑

有了vConsole这类调试工具以后,基本上能解决大部分调试问题了。但还是存在一些情况,我们必须进行真机调试。比如在部分机型上页面直接白屏,vConsole还没有进行加载等等

大致步骤如下:

1: 手机连接电脑2: 手机打开开发者选项,允许USB调试3: 电脑打开 chrome://inspect4: 手机打开App内的H5页面5: 此时电脑端 chrome://inspect 页面会出现手机端页面的信息,点击 inspect 打开开发者面板即可复制代码
  • 模拟器

实际工作中经常会出现用户的机型页面有问题,而我们因为各种原因并没有该用户对应的机型,这个时候模拟器就派上用场了。

node调试


Node 调试工具入门教程 推荐一下阮老师的文章,简单易懂。

简单说就是 node --inspect-brk xxx.js + chrome://inspect

举个例子,比如我想在 vue.config.js 中设置 cacheGroups,然后写了对应的正则或者 test 函数,但是打包之后的产物不符合预期,我想知道是哪里出了问题,此时就得调试打断点。

1. node --inspect-brk node_modules/.bin/vue-cli-service build

2. 打开浏览器,输入chrome://inspect  找到对应的target,然后inspect3. 在vue.config.js 设置断点,进行问题排查
复制代码

vscode调试


node

我们会发现上面调试node还是有点麻烦的,但是如果在编辑器中调试就很简单了。

方法一:首先在对应文件行号左边单击,打上相应的断点;打开调试终端,直接运行命令。

比如直接在 vue.config.js 中打上断点,然后打开调试终端,运行 npm run build

方法二:打开运行和调试侧边栏,选择 Node.js 调试器

以上就是我们前端开发中经常用到的调试技巧,每种技巧都有对应的使用场景,不足之处,大家评论区多多补充,一起学习。

大厂面试题分享 面试题库

前端面试题库 (面试必备) 推荐:★★★★★

地址:前端面试题库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

支付宝调用支付流程(沙箱环境)

文章目录实现效果:前提准备支付流程方案一1. 导入依赖2. 配置文件3. 支付宝初始化4. 唤起支付方案二1. 导入依赖2. 唤起支付实现效果: 前提准备 由于本文只是提及支付的流程及其一些相关知识点,所以前提数据自行准备,参考支付宝支…

Micropython ESP32

Micropython ESP32模块列表network模块WIFI STA模式WIFI AP模式machine模块CPU主频GPIO端口GPIO输入模式GPIO输出模式GPIO中断模式ADC模数转换DAC数模转换PWM脉冲宽度调制UART串口Timer定时器官方文档 下载固件 模块列表 network模块 help(network) object <module ‘net…

域名基础知识

1.域名的概念及作用 域名&#xff08;Domain Name&#xff09;&#xff0c;又称网域&#xff0c;是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称&#xff0c;用于在数据传输时对计算机的定位标识&#xff08;有时也指地理位置&#xff09;。 由于IP地址…

vulnhub之PRIME (2021): 2

1.信息收集 输入arp-scan 192.168.239.0/24发现192.168.239.168主机存活。 使用nmap对目标主机192.168.239.168进行端口收集,&#xff0c;发现存活端口&#xff1a;22、80、139、445、10123。 访问http://192.168.239.168/&#xff0c;没有发现可用的信息。 使用gobuster进…

1、Maven——Maven项目管理工具基本设置、把Maven集成到IDEA2022

目录 一、Maven相关参数配置 1、配置依赖&#xff08;jar包&#xff09;存储位置&#xff08;本地仓库&#xff09; 2、 配置依赖下载地址 二、把Maven集成到IDEA2022 一、Maven相关参数配置 1、配置依赖&#xff08;jar包&#xff09;存储位置&#xff08;本地仓库&#…

vue使用echarts 仪表盘样式不对 | 使用echarts5.0

最近在使用Echarts官网样例的仪表盘图时候发现自己用的和官网的样例样式完全不一样。 无论怎么调整参数都还是没有办法解决。如果有同学碰到和我一样的问题可以尝试一下使用最新版的Echarts&#xff08;5.0以上&#xff09;。 因为曾经也怀疑过Echarts版本问题因此npm install…

MySQL详解(五)——高级 3.0

查询截取分析 慢查询日志 MySQL的慢查询日志是MySQL提供的一种日志记录&#xff0c;它用来记录在MySQL中响应时间超过阀值的语句&#xff0c;具体指运行时间超过long_query_time值的SQL&#xff0c;则会被记录到慢查询日志中。 具体指运行时间超过long_query_time值的SQL&am…

汇编语言-实现一个简单的主引导记录(MBR)引导用户程序

本文参考李忠老师的《X86汇编语言&#xff1a;实模式到保护模式》 前言 自己手动实现一个简单的主引导记录来引导用户程序&#xff0c;有助于了解 主引导程序的工作流程在汇编代码层面如何调用函数&#xff08;函数调用的原理&#xff09;在汇编代码层面如何读写硬盘&#xf…

Android中级——滑动分析

SrcollAndroid坐标系视图坐标系常见方法实现滑动layout()offsetLeftAndRight()和offsetTopAndBottom()LayoutParamsscrollTo()与scrollBy()ScrollerVierDragHeplerAndroid坐标系 将屏幕左上角的顶点作为Android坐标系的原点&#xff0c;向右为X轴正方向&#xff0c;向下为Y轴正…

uni-app中uni-ui组件库的使用

介绍uni-ui是DCloud提供的一个跨端ui库&#xff0c;它是基于vue组件的、flex布局的、无dom的跨全端ui框架。uni-ui不包括基础组件&#xff0c;它是基础组件的补充特点高性能&#xff08;自动差量更新数据&#xff0c;优化逻辑层和视图层通讯折损&#xff0c;背景停止&#xff0…

Leetcode力扣秋招刷题路-0337

从0开始的秋招刷题路&#xff0c;记录下所刷每道题的题解&#xff0c;帮助自己回顾总结 337. 打家劫舍 III&#xff08;Mid&#xff09; 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root 。 除了 root 之外&#xff0c;每栋房子有且只有一…

ESP32+Arduino+OLED+u8g2播放视频

1、思路分析 ESP32采用Arduino开发&#xff0c;结合u8g2模块可以很方便地实现在oled上显示图片。因此&#xff0c;只需要将一个视频拆开成一帧帧&#xff0c;然后循环显示即可。 然而&#xff0c;有几个问题&#xff1a; 视频太大&#xff0c;esp32的flash无法存下怎么办&…

DynaSLAM-8 DynaSLAM中双目运行流程(Ⅱ):初始化SLAM系统部分System.cc

目录 1.回忆 2.System::System 1.回忆 上篇博客中我们讲述了DynaSLAM中初始化Mask R-CNN网络部分的代码。 这篇博客我们讲述初始化DynaSLAM除Mask R-CNN网络部分以外的代码。 2.System::System 初始化Mask R-CNN网络后&#xff0c;程序执行&#xff1a; // Create SLAM syst…

MongoDB 4.0支持事务了,还有多少人想用MySQL呢?

目录一、MongoDB 不支持事务&#xff1f;二、什么是事务&#xff1f;三、ACID的定义四、如何使用事务五、重要参数简介1、时间限制2、oplog大小限制六、连接池 数据库连接的缓存1、MongoDB查询数据五步走2、MongoDB连接池的参数配置七、聚合框架八、MongoDB文档格式设计1、限制…

【八大数据排序法】插入排序法的图形理解和案例实现 | C++

第十六章 插入排序法 目录 第十六章 插入排序法 ●前言 ●认识算法 ●一、插入排序法是什么&#xff1f; 1.简要介绍 2.图形理解 3.算法分析 ●二、案例实现 1.案例一 ●总结 前言 排序算法是我们在程序设计中经常见到和使用的一种算法&#xff0c;它主要是将…

MySQL【left join、right join、inner join】详细用法

参考链接&#xff1a;mysql的left join和inner join的详细用法https://blog.csdn.net/weixin_45906830/article/details/111133181 1. inner join&#xff1a;内连接&#xff1a;显示两个表中有联系的所有数据。 通俗讲&#xff1a;inner join 查找的数据是左右两张表共有的。 …

【C语言练习】字符串旋转你会嘛?

目录&#x1f36c;题目描述&#xff1a;&#x1f36d;思路一&#xff1a;&#x1f361;代码优化&#xff1a;&#x1f36d;思路二&#xff1a;&#x1f36c;题目描述&#xff1a;&#x1f36d;思路一&#xff1a;&#x1f36d;思路二&#xff1a;&#x1f36c;题目描述&#xf…

车辆控制器的 Fail Safe功能介绍

Fail Safe概要 在漆黑的夜路上&#xff0c;一辆开着头灯的汽车经过。 如果控制前照灯的控制器在这种情况下发生故障怎么办&#xff1f; 大灯会熄灭&#xff0c;造成危险吗&#xff1f; 不。 在这种情况下&#xff0c;控制器的“Fail Safe”被激活&#xff0c;前照灯保持其先前的…

企业需要一个数字体验平台(DXP)吗?

数字体验平台是一个软件框架&#xff0c;通过与不同的业务系统喝解决方案集成&#xff0c;帮助企业和机构建立、管理和优化跨渠道的数字体验。帮助企业实现跨网站、电子邮件、移动应用、社交平台、电子商务站点、物联网设备、数字标牌、POS系统等传播内容&#xff0c;除了为其中…

termux入门安装

下载安装 请使用F-Droid 的Termux&#xff0c;GooglePlay的 Termux 可能存在一些问题。 下载地址&#xff1a;https://f-droid.org/en/packages/com.termux/ 下载完成在安卓手机上直接安装Termux的apk文件就可以了。 termux换源 新版本的termux换源一条命令就可以超简单&…