前端调试入门

1 控制台

这里的控制台特指PC端浏览器进入开发者模式之后新打开的操作界面。常见的控制台有Chrome的控制台,Firefox的firebug。这些都能帮助我们调试前端问题。本手册将以Chrome浏览器控制台为例进行讲解。

下图1为Chrome浏览器控制台,图2为Firefox控制台。

图1 Chrome浏览器控制台
图 2 Firefox浏览器控制台

1.1脚本执行

上图1中,点击tab3 进入“console”Tab页,即为脚本执行区域。在这里,可以输入任何可执行的js代码,回车即可执行并打印返回值。比如:输入“alert('hello,world')”。即可在浏览器弹出弹框,显示‘hello,world’。

1.2网络请求

上图1中,点击tab5进入“Network”Tab页,可以看到当前的所有网络请求,包括url,请求参数,返回数据,请求cookie等详细信息。前面提到的流水号,就可以在这里通过查看具体接口返回值找到。网络请求截图,请见:图3.

图3 Network截图

1.3 cookie

开发者工具中也可以查看cookie等本地存储相关数据(包括localStorage,sessionStorage等)。Tab6进入Application选项卡,即可查看相关数据,其中就有Cookie等详细信息。见图4示意。

图4 cookie查看截图

2 断点debug

断点是指js代码在运行的过程中,我们需要人为中断执行,并查看此刻的运行时变量等相关信息的一种调试方法。

2.1如何打断点

以Chrome为例,打断点首先需要切换到Tab4 Source。找到需要打断点的文件和行,在此行之前点击一下即可。然后刷新页面或者执行其他可以让程序运行到断点位置的逻辑(比如触发一个事件,console裸调指定方法函数等)。

下图5是在一个活动页面对注销逻辑打断点的示意图,图中,我们事先对login.js的913行打了一个断点,然后点击页面上的注销按钮,程序运行到断点位置暂停。

快捷键:

1) F8,恢复执行并跳到下一个断点

2) F10,恢复执行并跳到下一个运行栈,一般为子函数。

图5 打断点示意图

2.2 如何查看运行时变量

我们打断点是为了调查问题,程序运行到断点位置,可以直接鼠标移动到相关变量名或者方法上面查看它的值。如果想在运行到断点位置执行其它逻辑,可以直接在console区域运行相关脚本。

3代理

前端代理是指用本地文件替换网络文件的一个动作,代理可以用来调试问题。比如在本地文件中加上alert弹框弹出关键节点的信息,这可以有利于调试。特别是前端调试。或者当我们发现网络文件有问题的时候,需要修复问题,就可以本地改文件,然后代理,这样访问指定页面就可以看到修改后的效果。

3.1常规代理

常规代理指http代理,即代理http协议的各种网络请求。代理需要用到第三方代理工具:Windows上推荐用Fiddler,Mac上推荐用Charles。

下面以Fiddler为例,介绍如何使用Fiddler进行常规代理。

1.首先下载Fiddler,并安装。Fiddler实质上是一款基于网络抓包的Web Debuger工具。

2.打开Fiddler,点击右侧的AutoResponder的Tab页,勾选图6所示的几个选项。

3.在左侧网络列表中选择自己需要代理的请求,拖拽到右侧,进入下面的Rule Editor。

在Rule Editor中把下面的输入框中的值设为本地文件,可以通过下拉选择“Find a File”弹出文件选择对话框进行选择。

点击右下角的保存,代理设置完毕。重新刷新网页,请求即可,这时,指定的网络请求将会直接用本地的文件替代。

图6 Fiddler代理配置示意

3.2 https代理

https是采用了SSL加密服务的Http协议,客户端与服务器间的通信是加密传输的,Fiddler如果需要做中间人,就必须拥有被代理域名的证书,可以解密远端数据,并且通过自己的证书传给浏览器。

下面介绍如何配置https代理,可以参照图7.

1.打开Fiddler,一次进入菜单:ToolsàFiddler Options àHTTPS

2.勾选“Captrue HTTPS CONNECTs”,

3.勾选“Decrypt HTTPS traffic”,选择“from all process”

4.勾选“Ignore server certificate errors”

5.点击右边“Actions”按钮,选择“Trust Root Certificate”选项,选择Yes安装证书。

至此,Https代理已经配置完毕,如果要进行代理,剩下的步骤可以参照3.1。

图7 HTTPS代理配置示意

3.3手机代理

移动端请求如何代理,这块也可以通过Fiddler完成。按照以下步骤完成设置:

保证手机和电脑上的Fiddler在同一个网段(连接同一个Wifi,比如LabWifi)。

1.打开Fiddler,进入ToolsàFiddler OptionsàConnections

2.设置Port为一个固定数字,比如8888

3.勾选:“Allow remote computers to connect”

4.勾选:“Reuse client connections“

5.勾选:“Reuse server connections“

6.设置手机wifi代理到PC的ip地址,并且端口设置为上面的固定数字,比如8888。

此时完成设置,手机上的http请求也可以用fiddler抓取了。

注:如果要进行手机上的https抓包,需要在以上步骤完成之后,手机访问PC的ip:port(和fiddler上设置的port保持一致),获取证书并安装之后才可以。

4移动端debug技巧

移动端调试指在安卓机/iphone/ipad等手持设备上调试前端页面逻辑的概念。这里将针对几种典型的情况给出最合适的debug方法。

4.1 安卓 微信/手Q/QQ浏览器/腾讯产品APP

这几种情况都有一个共性,就是app是腾讯的产品,而且在安卓手机上,我们知道安卓支持连接数据线结合Chrome内核的调试器进行inspector调试,故这几类情况我们将推荐使用TBS Studio进行调试。

TBS Studio是QQ浏览器X5内核前端调试平台,支持断点调试,抓取网络请求,查看DOM结构,console控制台等,功能非常丰富。电脑上安装TBS studio之后,就可以将手机通过数据线连接到电脑,然后通过TBS Studio进行调试。

具体的操作方法见 https://x5.tencent.com/

4.2安卓其它环境/ios环境

安卓其它环境下,或者ios环境下调试前端问题很难进行断点调试,只能采用最原始的打log,即alert弹框。这种环境下我们需要借助fiddler结合手机进行代理文件,并在代理的js文件中按需打alert。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吴伟祥

Fiddler是位于客户端和服务器端的HTTP代理(目前最常用的http抓包工具之一)

抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark.为什么使用fiddler?原因如下:

1364
来自专栏北京马哥教育

Vim 新手节省时间的 10 多个小技巧

Vim 是很多开发者的首选编辑器,通过设置正确的命令和快捷方式,它可以帮你更快的完成工作。这篇文章我们为 Vim 新手提供一些快捷键等方面的小技巧,帮你提升工作...

3807
来自专栏V站

Speed丨如何快速给网站添加Pjax?

Pjax是一种很多网站( facebook,  twitter)都支持的浏览方式, 当你点击一个站内链接的时候, 不是做页面跳转, 而是只是站内页面刷新。设置后...

2494
来自专栏前端人人

React多页面应用1(webpack4 开发环境搭建,包括热更新,api转发等)

本教程总共9篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1、React多页面应用1(webpack4 开发环境搭建...

5563
来自专栏吴伟祥

防止用户将表单重复提交的方法 原

表单重复提交是在多用户Web应用中最常见、带来很多麻烦的一个问题。有很多的应用场景都会遇到重复提交问题,比如:

872
来自专栏前端儿

在浏览器客户端进行爬虫开发

在Node环境下,可以用Request模块请求一个地址,得到返回信息,再用正则匹配数据,或者用Cheerio模块包装-方便定位相关的标签项

3241
来自专栏vue学习

4.vue-router之什么是嵌套路由

大家都知道选项卡,在选项卡中,顶部有数个导航栏,中间的主体显示的是内容;这个时候,整个页面是一个路由,然后点击选项卡切换不同的路由来展示不同的内容,这个时候就是...

972
来自专栏大前端开发

【新闻】微信小程序开发工具升级到版本 0.10.102700

今晚引来了微信小程序开发工具《微信web开发者工具》的一次更新,此次更新新增了很多API,修复了一些bugs,也标记了一些即将废弃的API。这次更新也升级了开发...

1105
来自专栏進无尽的文章

干货-GitHub 使用中的一些细节

第一次使用 github 的朋友相信都会挺陌生的,因为是纯英文的页面加上不适太熟悉内部的操作,所以一些常规的操作却找不到操作的入口,甚是捉急,本文就几个操作细节...

1823
来自专栏极乐技术社区

微信小程序开发详解《三》APP生命周期

1:微信小程序APP的生命周期方法: 在微信小程序工程中的app.js中增加如图所示方法 ? 编译运行,查看日志如图所示:微信小程序启动时,调用生命周期方法为:...

22810

扫码关注云+社区