写点什么

Web 应用调试:现在是 Weinre 和 JSConsole,最终会是 WebKit 的远程调试协议

  • 2011-08-06
  • 本文字数:1830 字

    阅读完需:约 6 分钟

随着智能手机和平板电脑的越来越流行,这对于开发者来说意味着网站需要进行优化,或者适应移动浏览器。但是在移动平台上的调试工具却一直处于功能贫血状态;现代的桌面浏览器装备了功能强大的 JavaScript 和 DOM 调试器,以及性能剖析器。而在移动平台上,调试方法却只能使用 alert() 弹出对话框或者登录到控制台来查看代码执行的位置以及变量的状态;检查 DOM 或者 CSS 的状态是非常困难的,甚至是不可能完成的任务。

有一些工具在弥补浏览器的这些不足,与此同时,浏览器厂商也在改进这种情况,它们在向浏览器中加入调试器以及远程调试支持。

现状:移动调试的变通方案

这些变通方案和未来的移动调试支持有一个共同点:它们是远程工作;调试不会真正发生在移动设备上,而是在其他机器上通过网络连接了一个调试的 GUI。

其中一个工具就是 Weinre ,这个工具是由 Patrick Mueller 开发,现在已经是 PhoneGap 项目的一部分了。Weinre 的调试功能是使用 JavaScript 编写,而且必须包含在调试目标的代码中,例如需要调试的 HTML 页面。Weinre 需要一个服务器来连接到调试目标,并且将消息转发给调试器 GUI。这个调试器 GUI 基本上就是一个由 HTML 和 JavaScript 编写的 WebKit 的 Web Inspector。

Weinre 能够做什么?一旦调试目标连接到调试器 GUI,用户可以从终端输出中查看调试目标的代码输出以及在调试目标的环境中对 JavaScript 代码求值。Weinre 同样也支持调试目标的 DOM 和 CSS 查看和修改。

有些缺失的功能是需要 VM 支持,例如设置和捕捉断点以及相关功能,当然还有性能剖析器。

PhoneGap 是一个跨平台的架构,它允许应用程序使用 HTML/JavaScript 作为 GUI,并且仍然能够访问本地 API。将Web 调试变得更加容易是PhoneGap 的使命之一,于是,Weinre 现在成为了PhoneGap 项目的一部分。

JSConsole 是一个风格和 Weinre 类似的工具,它更多地关注于控制台输出和代码求值。在访问 JSConsole 的网站的时候,用户输入“:listen”来获得带有 GUID 的一段 JavaScript 代码。这段代码需要被加入到待调试的网页中。于是,在加载网页的时候,代码将会连接到 JSConsole 服务器,并且根据 GUID 将此会话和用户的会话关联起来,于是用户浏览器中的控制台现在便已经处于待调试网页的 JavaScript 运行时环境中了。

iOS 用户安装一些应用来访问 JavaScript 运行时环境,例如 JSConsole app 或者 Bugaboo

未来:远程调试

这些变通方案允许用户访问移动浏览器中的 JavaScript 运行时环境来观察和交互 - 只在一定的程度。但是,开发者需要使用桌面浏览器所拥有的强大的调试工具:多种断点(基于行的或者是异常触发,亦或是 DOM 改变时触发),剖析器等更多功能。

解决方案是将调试功能引入到移动运行时环境中,于是这样就能够通过远程协议进行调试。

Javascript, DOM, CSS, etc, whereas the V8 protocol only supports the Javascript functionality.

WebKit 项目近期宣布了支持远程调试,这就意味着可以通过网络协议来访问运行时环境并且调试,并且调试器GUI 可以是另外一个进程,或者运行在另外一台机器上。这个功能在一些浏览器和JavaScript 引擎上已经有一定程度的支持,因为允许第三方调试器GUI 来帮助用户连接到调试环境的调试器是非常重要的。Firefox 正在开发 CrossFire,这是一个支持调试功能的协议,而且 Google 的 V8 引擎也有自己的远程调试协议,这个协议已经被用在一些IDE 中,例如Cloud9 的 Chrome 调试器和 Node.js 工具。不过,我们也要注意到,CrossFire 和 WebKit 的新协议都对 Web 调试特性提供了广泛的支持。例如 JavaScript、DOM 和 CSS 等,但是 V8 的协议只是支持了 JavaScript 的调试功能。

一旦移动 JavaScript 运行时环境和 HTML 组件支持了这些远程协议,它们的调试能力不会亚于任何一个桌面浏览器。

如果真是如此,将会是什么样呢,我们可以从一些已经支持这些协议的平台上看出一些端倪。一个例子就是 Blackberry 在 Playbook 平板电脑上的远程调试支持,它包含了 WebKit 中最新的 WebInspector 和远程调试特性。

Opera 的移动浏览器也通过 DragonFly 调试器来支持远程调试。我们需要注意,Opera Mobile 是一个功能齐备的浏览器,而 Opera Mini 只是简单地展示在服务器已经渲染好的 HTML 文件以及中转用户事件。

仍然值得期待的是,Android 和 iOS 上的浏览器在什么时候会跟进并且支持远程调试。

你是否在使用我们没有提及过的调试工具呢?

查看英文原文: Debugging Mobile Web Apps: Weinre and JSConsole Now, Remote WebKit Eventually

2011-08-06 17:1513228
用户头像

发布了 90 篇内容, 共 34.1 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

APICloud App开发教程之云修复功能

YonBuilder低代码开发平台

APP开发 APICloud 热更新

阿里巴巴云原生大数据运维平台 SREWorks 正式开源

阿里云大数据AI技术

大数据 自动化运维 大规模网络运维

Apache SeaTunnel (Incubating) 2.1.0 发布,内核重构、全面支持 Flink

Apache SeaTunnel

大数据 大数据平台 apache 社区 Apache SeaTunnel #开源项目

基于Laravel模块化极速开发框架 免费开源CMS

ModStart开源

IT运维工具难用吗?有没有简单易操作的?

行云管家

运维 IT运维

电路模型和电路定律 (Ⅲ)

謓泽

3月月更

如何理解基础服务和通用服务

Im胡子

基础服务 通用服务 基础服务边界

两会“数字经济”高频出位,博睿数据为企业数字转型提供有力引擎

博睿数据

多场景推进 服务网格在联通的落地实践(下)

百度开发者中心

Rust 用于移动开发的几种方式

非凸科技

Java c++ Python rust 量化

建木小故事

Jianmu

开源 后端 持续集成 建木CI

春分耕种时,AI“现身”田间地头

百度开发者中心

百度希壤元宇宙平台上线首个汽车数字展厅,领克探索汽车营销新方式

百度开发者中心

Gartner发布中国IaaS PaaS市场服务报告,天翼云强势入选

天翼云开发者社区

天翼云成为首个加入openGauss社区的运营商云

天翼云开发者社区

公有云市场百舸争流!天翼云稳居第一梯队,进入领导者象限

天翼云开发者社区

Docker Build时的安全问题

火线安全

Docker 云原生 云安全 docker build

以太坊的扩容革命:ETH2.0

不登山的小鲁

以太坊 扩容 Ethereum eth eth2.0

ModStartCMS Laravel9 模块化建站系统 v3.5.0 多图字段支持,系统优化升级

ModStart开源

IT运维工具难用吗?有没有简单易操作的?

行云管家

云计算 运维 IT运维

开学季 | 飞桨AI Studio课程学习,小白也可以成为一名优秀的算法工程师!

百度开发者中心

iOS开发面试的43道最新面试题,让你稳拿大厂offer!

iOSer

ios iOS面试 ios开发 iOS面试题

保姆级SpringBoot+Vue图片上传到阿里云OSS教程

沉默王二

Spring Boot

企业在线产品宣传册应该如何设计?

小炮

产品宣传手册

信通院推出数字化赋能者新标准天翼云获评数字化转型赋能服务集体

天翼云开发者社区

架构实战营模块八消息队列mysql数据库设计

刘洋

架构实战营 #架构实战营 「架构实战营」

中国版Postman:Apifox

Liam

程序员 Jmeter Postman API swagger

“后疫情时代”支付厂商发力B端已成共识,市场规模破3千亿!

易观分析

产业支付

产品帮助中心对SaaS行业的作用

小炮

SaaS平台 帮助中心

限量独家!濒危动物数字藏品免费发放!

百度开发者中心

雄安新区设立四周年,看天翼云以数字底座托起未来之城

天翼云开发者社区

Web应用调试:现在是Weinre和JSConsole,最终会是WebKit的远程调试协议_Java_Werner Schuster_InfoQ精选文章