前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一文读懂H5移动开发调试技巧

一文读懂H5移动开发调试技巧

作者头像
IT大咖说
发布于 2018-12-24 08:45:08
发布于 2018-12-24 08:45:08
1.5K0
举报
文章被收录于专栏:IT大咖说IT大咖说

内容来源:作者 | Jartto,http://jartto.wang/2018/11/01/mobile-debug/

阅读字数:4478 | 12分钟阅读

摘要

随着移动设备的高速发展,H5 开发也成为了 F2E 不可或缺的能力。而移动开发的重中之重就是掌握调试技巧,定 Bug于无形。

一、概要

因为移动端操作系统分为 iOSAndroid 两派,所以本文的调试技巧也会按照不同的系统来区分。寻找最合适高效的方式,才能让你事半功倍。

文章会列举目前适合移动端调试的多种方案,快来选择你的最佳实践吧!

二、iOS 设备

Safari:iphone 调试利器,查错改样式首选,需要我们做如下设置:

  • 浏览器设置:Safari – 偏好设置 – 高级 – 勾选「在菜单栏中显示开发」菜单
  • iphone 设置:设置 – Safari – 高级 – 打开 Web 检查器

大功告成,这时候通过手机的 Safari 来打开 H5 页面,我们通过浏览器开发选项可以看到:

iOS 模拟器:不需要真机,适合调试 Webview 和 H5 有频繁交互的功能页面。

首先下载 Xcode ,运行项目,选择模拟器 iphonex,编译后就会打开模拟器,如下:

可以看到 H5 已经在「壳子」中运行起来了,下来就可以尝试调用 Webview 的方法,和「壳子」交互了。更多的调试技巧可以参考文章:iOS 模拟器调试。

具体的调试功能还是依赖浏览器的开发选项,与上无异,就不赘述了。

三、抓包

Charles: Mac OS 系统首选的抓包工具,适合查看、控制网络请求,分析数据情况。

Charles 抓包首先需要配置手机代理,Wifi – 配置代理(IP 地址) – 手动,如下图:

配置好手机代理,这时候打开 Charles ,就会收到确认提醒,选择允许。接下来就可以捕获手机的请求了,但是这些都是常规操作,我们来点高级的。

有意思的是:我们可以用本地文件来替换线上文件,方便调试,远程定位线上问题。

选择 Structure,找到需要替换的文件,右键菜单 – Map Local,如下图:

这时候就会打开一个弹窗,填写具体的配置:

OK,大功告成,快去改动本地文件吧,从此再也不怕线上调试了。需要注意的是如果抓取 HTTPS 请求,要安装信任证书,下文会详细说明。

与之相应的是 Windows 平台的 Fiddler,功能大致相似,这里就不细说了。

四、Spy-Debugger

spy-debugger: 移动端调试的利器,便捷的远程调试手机页面、抓包工具。

我们先来安装:

> sudo npm install spy-debugger -g

启动命令:

> spy-debugger

这时候,控制台会打印出如下信息,说明服务已经启动了:

正在启动代理 本机在当前网络下的IP地址为:10.200.24.46 node-mitmproxy启动端口: 9888 浏览器打开 ---> http://127.0.0.1:50389

最后一步,设置手机代理:10.200.24.46,端口号:9888。补充说明一下:

  • Android 设置代理步骤:设置 – WLAN – 长按选中网络 – 修改网络 – 高级 – 代理设置 – 手动
  • iOS 设置代理步骤:设置 – 无线局域网 – 选中网络 – HTTP 代理手动

接下来,尝试一下抓包:

再打开调试页面:

HTTPS 抓包,需要安装根证书,下文会详细说明。

五、Whistle

上面推荐了一款操作简单的调试利器,升级一下,看看更加强大的调试工具 whistle。

whistle:基于 Node 实现的跨平台 Web 调试代理工具。

whistle(读音[ˈwɪsəl],拼音[wēisǒu])是基于 Node实现的跨平台抓包调试代理工具,有以下基本功能:

  1. 查看 HTTP、HTTPS请求响应内容
  2. 查看 WebSocket、Socket 收发的帧数据
  3. 设置请求 hosts、上游 http/socks 代理
  4. 修改请求 url 、方法、头部、内容
  5. 修改响应状态码、头部、内容,并支持本地替换
  6. 修改 WebSocket 或 Socket 收发的帧数据
  7. 内置调试移动端页面的 weinre 和 log
  8. 作为 HTTP 代理或反向代理
  9. 支持用 Node 编写插件扩展功能

大致了解后,我们来尝试安装:

sudo npm install -g whistle

淘宝镜像:npm install whistle -g –registry=https://registry.npm.taobao.org

whistle 安装完成后,执行命令 whistle help 或 w2 help,查看 whistle 的帮助信息:

run Start a front service start Start a background service stop Stop current background service restart Restart current background service help Display help information

这里只列出部分命令,更多请 w2 help 查看。

看到上面的操作,我们何不试试缩写 w2 start 来启动服务:

w2 start

看到如下的输出,说明服务已经正常启动了:

这时候在浏览器打开链接,同时手机上配置代理(同 Charles),接下来就可以愉快的调试了。值得注意的是,whistle 的功能远非如此,更多的扩展请移步官网文档,贴张图先预览下:

记得开启拦截 HTTPS:勾选 Capture HTTPS CONNECTs

六、安装 HTTPS 证书

对于 Charles,按照如下操作安装证书:

help-SSL - Proxying - install Charles root

弹出安装证书的提示框:

按照提示去手机浏览器打开:chls.pro/ssl,安装信任证书即可。

对于 spy-debugger,HTTPS 抓包,需要安装根证书,选择 RootCA,扫描二维码按照提示信任证书。安装证书的时候需要注意以下几件事情:

  1. 手机必须先设置完代理后再通过(非微信)手机浏览器访问 http://s.xxx (地址二维码)安装证书;
  2. 手机首次调试需要安装证书,已安装了证书的手机无需重复安装;
  3. 手机和 PC 保持在同一网络下(比如同时连到一个 WIFI 下);

切记:移动设备和 PC 必须在一个 WIFI 下。

七、真机调试

上面说了很多,但是实际开发过程中,我们不会等上线了才去验证兼容性,所以你可能需要提前「真机调试」。这里提供两种方式:

Chrome Remote Devices:依赖 Chrome 来进行远程调试,适合安卓手机。

首先,开启 Android 手机的「开发者选项」,勾选 「USB 调试」

然后,Chrome 中输入:chrome://inspect,进入调试页面。

很全面的一篇文章,可以参考:Chrome 远程调试。

localhost 转 ip,扫描二维码手机显示,这个比较简单。

可以在浏览器安装一个 Chrome 插件,用于将当前页面链接转换成二维码,这样就能边开发边真机预览,非常方便。

八、调试工具

这里推荐一款调试工具:vConsole,一个轻量、可拓展、针对手机网页的前端开发者调试面板。安装很简单:

npm install vconsole

如果未使用 AMD/CMD 规范,可直接在 HTML 中引入 vConsole 模块。为了便于后续扩展,建议在 <head> 中引入:

<head> <script src="path/to/vconsole.min.js"></script> <script> var vConsole =new VConsole(); </script> </head>

如果使用了 AMD/CMD 规范,可在 module 内使用 require() 引入模块:

var VConsole = require('path/to/vconsole.min.js'); var vConsole = new VConsole();

请注意,VConsole 只是 vConsole 的原型,而非一个已实例化的对象。

所以在手动 new 实例化之前,vConsole 不会被插入到网页中。大概功能如下图:

看起来很完美,但是有个小缺点:网络请求,需要刷新页面,可是很多内嵌的 H5 页面是没有机会刷新页面的,所以需要客户端童鞋配合增加刷新的功能方便调试。

九、场景分析

既然移动端调试有这么多种方案,那在实际操作中,我该如何取舍?

说了这么多钟方案,这里总结一下各个方案的适用场景,根据不同的场景去选择最佳的调试方案,这样才能更快速的输出,Carry 全场:

1.Safari:iPhone 调试利器,查错改样式首选;

2.iOS 模拟器:不需要真机,适合调试 Webview 和 H5 有频繁交互的功能页面;

3.Charles: Mac OS 系统首选的抓包工具,适合查看、控制网络请求,分析数据情况;

4.Fiddler:适合 Windows 平台,与 Charles 类似,查看、控制网络请求,分析数据情况;

5.Spy-Debugger: 移动端调试的利器,便捷的远程调试手机页面、抓包工具;

6.Whistle:基于 Node 实现的跨平台 Web 调试代理工具;

7.Chrome Remote Devices:依赖 Chrome 来进行远程调试,适合安卓手机远程调试静态页;

8.localhost 转 ip:真机调试,适合远程调试静态页面;

9.vConsole:内置于项目,打印移动端日志,查看网络请求以及查看 Cookie 和 Storage;

十、白屏处理

移动端的白屏是最头疼的问题,这里顺带提供几种分析问题的思路,以供参考。

1.方案分析 ☆

一般上线后出现问题,我们最容易想到的就是:是否是新代码引起的问题。所以有效解决手段就是「控制变量法」。

2.代码注释法 ☆

莫名奇妙的白屏,适合页面无异常日志,同时无请求发送,问题集中在单一页面的情况。这种问题比较直观,肯定是某一页面出现了代码异常或是无效的 return,导致页面渲染终止,但并不属于异常。这时候,「代码注释法」将是你的最佳选择,逐行去注释可以代码,直到定位问题。

3.类库异常,兼容问题 ☆

这种场景也会经常遇到,我们需要用可以调试页面异常的方式,如 Safari,Spy-Debugger,Whistle,vConsole 查看异常日志,从而迅速定位类库位置,从而找寻替换或是兼容方案。

4.try catch ☆☆

如果你的项目没有异常监控,那么在可疑的代码片段中去 Try Catch 吧。

5.Debug 包 ☆☆☆

在你的项目中装上 vConsole,并配合客户端 debug 插件,360 度无死角监控异常,这才是最有效的方式。

6.ES6 语法兼容 ☆

一般我们都会通过 Babel 来编译 ES6 ,但是额外的第三方类库如果有不兼容的语法,低版本的移动设备就会异常。所以,先用上文讲述的调试方法,确定异常,然后去增加 polyfill 来兼容吧。

以上为今天的分享内容,谢谢大家!

IT大咖说 | 关于版权

由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT大咖说 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
DDOS攻击一次的成本有低?实战模拟一下看看!
分布式拒绝服务(DDoS)攻击以其低廉的启动成本和惊人的破坏力著称。攻击者通过黑市轻松获取服务,成本从几十元人民币的小额支出到针对大型目标的数千乃至数万元不等。为了具体理解这一成本结构,我们将通过一个简单的模拟示例,利用Python编写一个基础的“攻击流量生成器”,以此来直观感受DDoS攻击成本与规模的关系。
群联云安全小杜
2024/05/10
8890
DDOS攻击一次的成本有低?实战模拟一下看看!
流媒体的安全谁来保障
流媒体(英语:Streaming media)是指将一连串的多媒体资料压缩后,经过互联网分段发送资料,
德迅云安全--陈琦琦
2024/04/11
1850
DDoS攻击与防御:从原理到实践
出于打击报复、敲诈勒索、政治需要等各种原因,加上攻击成本越来越低、效果特别明显等特点,DDoS攻击已经演变成全球性网络安全威胁。
0xtuhao
2022/06/21
1.8K0
DDoS攻击与防御:从原理到实践
DDoS的发展起源告诉你:究竟防御DDoS能不能一劳永逸呢?
防御DDoS攻击已经成为当下互联网企业所需面临的最大难题之一。互联网上最臭名昭著的一种网络攻击形式就包括DDoS攻击,它大约出现在上个世纪90年代,至今活跃已经近20年,其最可怕之处就在于攻击成本低,且防御成本高,造成的损失往往也非常可怕。
blublu7080
2021/01/20
4440
DDoS的发展起源告诉你:究竟防御DDoS能不能一劳永逸呢?
大流量DDoS攻击:未来的网络攻击趋势与防御策略
随着互联网技术的发展和数字化转型的加速,网络攻击的规模和复杂性也在不断升级。特别是大流量分布式拒绝服务(DDoS)攻击,已经成为网络安全领域的一个重大挑战。本文将探讨大流量DDoS攻击的现状、未来趋势以及企业如何采取有效的防御措施。
群联云安全小杜
2024/07/22
5140
大流量DDoS攻击:未来的网络攻击趋势与防御策略
构建高可用和高防御力的云服务架构第一部分:深入解析DDoS高防(1/5)
在数字化时代,网络安全已成为全球关注的焦点。随着互联网技术的快速发展和应用的广泛深入,网络安全形势日益严峻。特别是分布式拒绝服务(DDoS)攻击,以其破坏性强、难以防范的特点,对个人、企业乃至国家安全构成了严重威胁。
正在走向自律
2024/12/18
2530
构建高可用和高防御力的云服务架构第一部分:深入解析DDoS高防(1/5)
浅析大规模DDOS防御架构:应对T级攻防
本文作者:ayaz3ro DDOS分类 在讲防御之前简单介绍一下各类攻击,因为DDOS是一类攻击而并不是一种攻击,并且DDOS的防御是一个可以做到相对自动化但做不到绝对自动化的过程,很多演进的攻击方式自动化不一定能识别,还是需要进一步的专家肉眼判断。 网络层攻击 Syn-flood 利用TCP建立连接时3次握手的“漏洞”,通过原始套接字发送源地址虚假的SYN报文,使目标主机永远无法完成3次握手,占满了系统的协议栈队列,资源得不到释放,进而拒绝服务,是互联网中最主要的DDOS攻击形式之一。 网上有一些加固
FB客服
2018/02/06
2.6K0
浅析大规模DDOS防御架构:应对T级攻防
什么是udp攻击,为什么udp攻击这难防御
老王和老李吵架败了,老王寒夜负气离家出走。老王衣服单薄,老李心疼老王,想给老王打电话哄他回家,可是打老王电话死活不接。此时换做你是老李,怎么办?
德迅云安全--陈琦琦
2024/06/21
4810
重新认识DDOS攻击:理解原理、识别特征与构建防御体系
随着互联网业务的蓬勃发展,分布式拒绝服务(DDoS)攻击已成为网络安全领域的一大顽疾。攻击者利用僵尸网络或云资源,对目标系统发起大规模、持续性的流量冲击,意图使其无法正常服务。本文旨在深入剖析DDoS攻击的原理、识别特征,并探讨构建全面防御体系的关键策略与技术手段,为腾讯云用户及广大网络安全从业者提供实用的参考。
群联云安全小杜
2024/04/25
1.8K0
重新认识DDOS攻击:理解原理、识别特征与构建防御体系
网络ddos和应用层ddos区别
DDoS攻击是由DoS攻击发展而来的,根据攻击原理和方式的区别,可以把DDoS攻击分为两个阶段,即从传统的基于网络层的DDoS攻击和现阶段较为常见的基于应用层的DDoS攻击,这两类攻击方式各有特点,都对网络的安全造成了极大的危害。对于应用层DDoS攻击来说,基于Web服务器的攻击是最常见的。
随心助手
2019/10/15
3.5K0
网络入侵检测系统之Suricata(七)--DDOS流量检测模型
分布式拒绝服务(Distributed Denial of Service,简称DDoS)将多台计算机联合起来作为攻击平台,通过远程连接利用恶意程序,对一个或多个目标发起DDoS攻击,消耗目标服务器性能或网络带宽,从而造成服务器无法正常地提供服务。
于顾而言SASE
2024/03/20
7430
网络入侵检测系统之Suricata(七)--DDOS流量检测模型
DDOS终极防御
何为DDOS:DDOS被称为分布式拒绝服务攻击,目的主要是让指定目标无法正常提供服务,是目前最强大,最难防御的攻击之一,是一个世界性的难题,并没有一个好的解决办法只能缓解
黑伞安全
2019/10/16
3.2K0
DDOS终极防御
浅谈ddos的测试方式
DOS(denial of service--拒绝服务)攻击的目的是使服务正常功能不可用。不像其他类型的攻击的目的是获取敏感信息,Dos攻击是不会威胁到敏感信息而是使合法用户不能使用服务。有时候Dos在其他攻击中也会存在一定的作用,比如使web应用防火墙拒绝服务,从而绕过防火墙。
信安之路
2018/08/08
2.4K0
浅谈ddos的测试方式
应对DDoS攻击的深度防御实践
在互联网空间中,分布式拒绝服务(DDoS)攻击是一种严重的网络安全威胁,它能够瞬间耗尽目标系统的处理能力或网络带宽,导致服务中断。本文将深入探讨DDoS攻击的本质及其防范机制,并辅以代码实例展示如何在实际场景中实施有效防御。
群联云安全小杜
2024/04/26
4600
应对DDoS攻击的深度防御实践
独家 | Fomo 3D 沦陷?为何又是 DDoS攻击?来听听区块链安全大牛的深度解析
据国内多家区块链媒体报道:2018年7月31日晚,多个韩国社区爆出“Fomo 3D被黑客攻击之后停止运营了”传言,据DappRadar上以太坊Dapp数据显示,其中Fomo 3D在24小时内访问量减少21.95%,24小时流量减少38.32%。
区块链大本营
2018/08/15
9000
独家 | Fomo 3D 沦陷?为何又是 DDoS攻击?来听听区块链安全大牛的深度解析
服务器经常被ddos攻击怎么办?
DDOS攻击全称分布式拒绝服务(Distributed Denial of Service)攻击指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动DDoS攻击,从而成倍地提高拒绝服务攻击的威力。
拾光博客
2023/05/16
2.3K0
服务器经常被ddos攻击怎么办?
高防Jtti防御ip原理
高防IP(高防IP防护服务)是一种针对网络攻击(尤其是DDoS攻击)的防护解决方案,其核心原理是通过流量清洗、负载均衡和分布式防御等技术,将恶意攻击流量拦截在目标服务器之外,同时保证正常用户的访问不受影响。以下是其核心原理和关键技术的详细说明:
jtti
2025/04/29
1300
经历锲而不舍的DDOS攻击
从昨晚的18:50分开始,每隔30分钟左右进行10G流量的ddos攻击
黄规速
2022/04/17
6440
经历锲而不舍的DDOS攻击
DOS攻击手段_ddos攻击原理与防御方法
DDoS是英文Distributed Denial of Service的缩写,意即“分布式拒绝服务”,那么什么又是拒绝服务(Denial of Service)呢?可以这么理解,凡是能导致合法用户不能够访问正常网络服务的行为都算是拒绝服务攻击。也就是说拒绝服务攻击的目的非常明确,就是要阻止合法用户对正常网络资源的访问,从而达成攻击者不可告人的目的。分布式拒绝服务攻击一旦被实施,攻击网络包就会从很多DOS攻击源(俗称肉鸡)犹如洪水般涌向受害主机,从而把合法用户的网络包淹没,导致合法用户无法正常访问服务器的网络资源,因此,拒绝服务攻击又被称之为“洪水式攻击”,常见的DDOS攻击手段有SYN Flood、ACK Flood、UDP Flood、ICMP Flood、TCP Flood、Connections Flood、Script Flood、Proxy Flood等。
全栈程序员站长
2022/11/15
2.2K0
深入浅出DDoS攻击防御
敌情篇 ——DDoS攻击原理 DDoS(Distributed Denial of Service,分布式拒绝服务)攻击的 主要目的是让指定目标无法提供正常服务,甚至从互联网上消 失,是目前最强大、最难防御的攻击之一。 按照发起的方式,DDoS可以简单分为三类。 第一类以力取胜,海量数据包从互联网的各个角落蜂拥而来, 堵塞IDC入口,让各种强大的硬件防御系统、快速高效的应急流 程无用武之地。这种类型的攻击典型代表是ICMP Flood和UDP Flood,现在已不常见。 第二类以巧取胜,灵动而难以察觉,每隔
架构师研究会
2018/04/09
4.8K1
相关推荐
DDOS攻击一次的成本有低?实战模拟一下看看!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档