Web Browser

出处

You implemented a mobile web browser, but it crashes sometimes when browsing. How to debug it?

Solution

该问题属于“Troubleshooting”,我们按照“The Rules”给出的模版进行分析。首先考虑主要流程,简述如下:用户打开应用,连接到网页,接收数据,用JavaScript及flash等插件解析网页,显示内容。由于并非每次浏览都会奔溃,因此可以假设打开应用,连接到网页,接收数据不是问题的关键。于是我们进一步考虑解析网页,显示内容这两步执行了什么,需要依赖哪些参数。

(1) 解析网页

这一步需要分析服务器端传入的HTML数据,并且调用JavaScript,Flash等插件显示网页的动态部分。该过程依赖于HTML解释器及各个插件是否工作正常,如果缺少插件并没有恰当地处理异常,可能导致应用奔溃。“检验的方法是需要研究奔溃现象是否和访问的具体网页有关,如果每次访问某个网页都会奔溃,则需要利用其他浏览器进一步研究解析该网页的过程中调用到了哪些模块,然后采用排除法确定待测试浏览器的哪个模块出现了问题。

(2) 显示内容

浏览网页的最后一步是将数据,图片和动态元素显示在页面上。考虑到这是手机端的浏览器,移动平台本身的计算资源比较有限,因此,内存可能成为瓶颈,并导致应用奔溃。该情况较容易出现在同时打开多个页面的情况。检验的方式可以是:同时访问多个大型门户网站,观察是否会造成应用奔溃。解决方式可以是:仅将用户正在浏览的页面内容读入内存,其他页面缓存至硬盘。并且可以降低图片分辨率,以减少内存消耗。