急速 debug 实战二(浏览器 - 调试线上篇)

简介: 通过前一篇的介绍,我们已经懂得基本的 debug 技巧,那么我们如何快速调试一些线上的问题呢。

本教程共三篇。


1.急速 debug 实战一 (浏览器 - 基础篇)

2.急速 debug 实战二 (浏览器 - 线上篇)

3.急速 debug 实战三 (Node - webpack插件,babel插件,vue源码篇)


通过前一篇的介绍,我们已经懂得基本的 debug 技巧,那么我们如何快速调试一些线上的问题呢。本文将线上的调试分为以下三种:(当然有更好的调试方式,可以在评论区提出)


  1. 线上即时修改;针对一些样式以及一些 js 已经知道问题所在快速地修改以达到解决 bug 的模式。


  1. 代理到本地代码; 这种情况可以解决线上代码与本地不一致,也可以非常方便地在源码插入代码立即调试


  1. 线上不存在 sourceMap 启用本地sourceMap; 有时候一些问题乍一眼看不出是什么问题,但是线上又不提供 sourceMap 所以我们可以启动本地的 sourceMap 来帮助我们定位问题。


所以示例在以下环境通过。


操作系统: MacOS 10.13.4


Chrome: 版本 72.0.3626.81(正式版本) (64 位)


线上即时修改



打开功能


在调试线上问题的时候,我们会遇到这样的问题,例如: 我需要在页面上直接修改样式快速地定位问题,可能是某些样式不兼容,导致渲染不成功。但是每当我们再 devTools 上修改完,我们想重新刷新页面。这个时候我们修改的东西都不见了。下面我介绍的这个功能就是能够让我们更好地调试线上问题,并且保持状态。


chrome devTools 有一个名叫 Overrides 的功能。这个功能对于我们线上调试有着极大的帮助


  1. 打开: http://yifenghua.win/example/debugger/demo3.html
  2. 通过按 Command+Option+I(Mac)Control+Shift+IWindowsLinux,打开 DevTools。 此快捷方式可打开 Console 面板。
  3. 点击 source 按钮


image.png


  1. 点击箭头所示按钮,找到 Overrides, 选中。
  2. 点击 Select folders for Overrides。选择一个本地的空文件夹目录。
  3. 跳出授权,点击允许


image.png


开始


这是我们刚才的页面


image.png


假设我们设计稿需要我们将背景色改成红色,并且字体大小改成22px。我们来进行修改。修改完成后刷新页面。打开后发现是这样的。


image.png

继续点击 source 标签。点击 Page 按钮。

image.png


打开我们demo3.html,将head中的 title 改成 debug03,并且保存(mac: command + s, windows: ctrl + s)。


image.png


再次刷新页面,发现我们的页面 title 已经成功被修改了。


最后,我们点击 source Page 中的 demo3.js。将 card.text='123';修改成 card.text='hello';,继续保存。


好了。我们已经完成了我们所有的修改了。


image.png


可以发现我们所有的文件下面都有一个小蓝点。这个就是修改后的文件储存在一开始选择的文件夹中。


查看 diff


那么如何查看我们之前修改了哪些内容呢? 继续打开 devTools ,点击右上角的三个小点 -> More tools -> Changes


image.png


可以看到我们刚才的所有修改啦。


image.png


到此我们已经完成了 Overrides 调试线上的方法了。


代理到本地代码



首先需要下载 charles 其他的代理工具也可以,只要能将请求代理到本地的工具都可以,这里我就用我熟悉的 charles 展示。 那么这种方式主要能调试线上的什么问题呢?


  1. 快速确认本地版本与线上是否一致。如果本地文件没有问题,线上有问题,那么重新打包一次即可。(如果有版本号请忽略)
  2. 调试代码。


调试代码


下面来演示一下,如何调试线上的代码。 假设以上是我们本地的项目。所以为了演示,你需要做以下几个步骤。


image.png


然后在我们的 dist 目录下会生成我们打包后的 js


image.png


  1. 打开: http://yifenghua.win/example/debugger/demo4.html
  2. 打开 devTools 的 netWork 查看 js 路径。 http://yifenghua.win/example/debugger/demo3.js
  3. 打开我们的 charles (嗯,如何配置和使用我不进行讲解,自行百度和 Google 吧)
  4. 点击 Tools 中的 Map Local 进行配置 。


image.png


  1. Add 一个规则


image.png


  1. 将刚才 netWork 中的 url 映射到本地地址(即刚才我们 clone 项目的位置),如图所示


image.png


对我们本地内容进行改动。改成如下所示


image.png


  1. 再次打开我们的页面 http://yifenghua.win/example/debugger/demo4.html
  2. 查看 charles 日志


image.png


可以看到已经成功将文件映射到本地。这样,我们就可以实时地调试我们的线上的文件啦。你可以插入各种标志点以及 debugger。


线上不存在 sourceMap 启用本地



sourceMap


嗯,除此之外,我们还可以通过 charles 添加 sourceMap。


修改我们刚才 clone 的项目,修改 webpack.config.js 和 index.js


webpack.config.js


image.png


index.js


image.png


运行


npx webpack --watch --progress


给 charles 再增加一个 Map Local


image.png


现在打开 http://yifenghua.win/example/debugger/demo4.html


点击 Card link,发现报错。


image.png


点击 index.js ,可以看到我们的能直接定位到源码啦。


image.png


总结



有了以上三种方式调试线上代码。应该说可以定位到绝大多数数问题了。如果大家有什么更好的方式可以留言,一起学习下,嗯,真香。 (溜了溜了)



相关文章
|
7月前
|
前端开发
调试前端时,在浏览器上修改参数并重新调用接口
有时候我们的页面点击过了,但是接口出问题,想修改参数再调用一次,一般是用apiPost工具把接口复制,再加上token和参数,但是这样非常的效率比较低。
811 0
|
7月前
|
监控 前端开发 JavaScript
深入探索谷歌浏览器开发者工具:提升网页开发与调试效率的终极指南(一)
深入探索谷歌浏览器开发者工具:提升网页开发与调试效率的终极指南(一)
202 0
|
4月前
|
数据采集 Web App开发 测试技术
使用Selenium调试Edge浏览器的常见问题与解决方案
在互联网数据采集领域,Selenium常用于自动化网页爬取。针对使用Edge浏览器时遇到的启动远程调试失败、访问受限及代理IP设置等问题,本文提供了解决方案。通过特定命令启动Edge的远程调试模式,并利用Python脚本配合Selenium库,可实现代理IP、User-Agent的设定及Cookie管理等高级功能,有效提升爬虫稳定性和隐蔽性。遵循步骤配置后,即可顺畅执行自动化测试任务。
973 1
使用Selenium调试Edge浏览器的常见问题与解决方案
|
4月前
|
存储 JSON 监控
JavaScript 逆向基础篇:浏览器调试与 Hook 技术
JavaScript 逆向基础篇:浏览器调试与 Hook 技术
383 1
|
5月前
|
Web App开发 前端开发 JavaScript
前端必备的浏览器调试技巧
【7月更文挑战第18天】 Chrome开发者工具是前端调试的关键,包括快捷键Ctrl+Shift+I/Cmd+Option+I打开它,DOM和CSS调试如编辑元素、样式,JS调试如断点、条件断点和监视变量,网络请求分析,性能评估如Lighthouse和性能面板,及截图、模拟设备等实用技巧,助力开发者提升效率。
142 1
|
5月前
|
数据安全/隐私保护
Dolphin指纹浏览器隐私保护升级:IPXProxy代理IP配置实战教程
Dolphin指纹浏览器采用先进的技术,让用户在一台电脑上就可以处理数百个配置文件。每一个配置文件都有着独特的浏览器指纹,极大的保障了用户上网的安全性。并且搭配代理IP一起,还能给每个文件配置不同的IP地址,让网络活动可以畅通无阻。下面给大家带来Dolphin指纹浏览器和IPXProxy代理IP配置详细教程
|
5月前
|
前端开发 JavaScript
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
vue3【实战】创建项目、创建并提交代码到远程仓库,安装 SASS, 清除浏览器默认样式 reset-css, 清除模板代码,提升开发效率的必要集成
83 0
|
5月前
|
Web App开发
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
软件开发常见流程之移动端调试方法,利用Chrome(谷歌浏览器)的模拟手机调试,搭建本地Web服务器,手机和服务器在一个局域网,通过手机访问服务器,使用服务器,利用ip实现域名访问
|
5月前
|
Web App开发 JavaScript 开发者
谷歌浏览器chrome安装vue调试插件Vue-Devtools
谷歌浏览器chrome安装vue调试插件Vue-Devtools
328 0
|
7月前
|
监控 前端开发 JavaScript
如何使用浏览器调试前端代码?
【4月更文挑战第11天】前端开发中,浏览器调试是关键技能,能提升代码质量。本文介绍了如何使用浏览器的调试工具:1) 打开调试窗口(F12或右键检查);2) Elements标签页检查DOM结构和样式;3) Console调试JavaScript,查看日志和错误信息;4) Sources设置断点调试JS文件;5) 利用Network、Performance和Memory等标签页优化性能。熟悉调试工具、利用日志和错误信息能有效定位问题,提高开发效率。
416 7
下一篇
DataWorks