[发明专利]一种JavaScript应用程序生产环境故障追踪和复现方法及存储介质在审
申请号: | 202111393928.7 | 申请日: | 2021-11-23 |
公开(公告)号: | CN114138637A | 公开(公告)日: | 2022-03-04 |
发明(设计)人: | 陈一雄;夏鸣远 | 申请(专利权)人: | 上海绊糖信息科技有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 上海恒慧知识产权代理事务所(特殊普通合伙) 31317 | 代理人: | 张宁展 |
地址: | 200030 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 javascript 应用程序 生产 环境 故障 追踪 复现 方法 存储 介质 | ||
本发明涉及一种JavaScript应用程序生产环境故障追踪和复现方法及存储介质,所述方法包括以下步骤:S1、在JavaScript应用程序的源代码中插入回调探针;S2、将原始的和插桩后的应用程序代码文件、逆插桩映射表文件提交给故障复现模块;S3、在每个回调函数的注册阶段记录完整的注册函数的栈追踪、在每个回调函数的执行阶段捕获异常并上抛回调函数的栈追踪;S4、当故障发生时,生成故障报告并上报给故障复现模块;S5、入库故障报告并对故障报告进行逆插桩和聚类;S6、查阅逆插桩和聚类后的故障报告,复现故障、并定位和修复故障。有益效果是低性能开销、不侵犯用户隐私数据、不修改应用程序运行环境。
【技术领域】
本发明涉及计算机软件分析和质量保障技术领域,具体涉及一种JavaScript应用程序生产环境故障追踪和复现方法及存储介质。
【背景技术】
现代的JavaScript已经发展为一门全栈式编程语言,广泛地应用在网页应用程序、桌面应用程序、移动应用程序、嵌入式应用程序和后端服务程序的开发中。JavaScript的广泛应用得益于其高度动态的语言特性,比如弱类型系统、动态脚本加载等,这些特性使得JavaScript应用程序编写起来非常简单,但同时也导致程序分析和软件测试等软件质量保障技术在开发和测试阶段更难以发现应用程序中的缺陷,这些缺陷导致应用程序在生产环境中出现各种故障,例如按钮无响应、页面白屏等。因此生产环境下的故障追踪技术作为JavaScript应用程序软件质量的最后一道保障防线就显得十分重要。由于生产环境的多样性以及最终用户输入的复杂性,现代故障追踪技术通常使用程序动态分析技术来收集程序的数据流、控制流等信息来帮助开发人员复现和定位生产环境中的故障。例如,CN107193734B提出的基于录制重放技术的故障追踪和复现方法将生产环境下的程序输入完整地录制下来,当发生故障时,开发者重新执行录制下来的程序输入来复现故障;CN113162945A提出的基于运行时插桩的方法通过修改应用程序的运行环境(即浏览器或者NodeJS底层代码)来记录程序的数据流和控制流等信息;学术界提出的Jalangi[1]基于影子内存的方法通过在影子变量上进行符号执行来支持故障复现。
应用到生产环境的技术天然地受到一些要求的约束,包括但不限于:不侵犯用户隐私,支持各种运行环境,不引入明显的性能开销影响应用程序的正常使用和用户体验等等。然而现有的技术均不能很好地满足这些方面的要求。例如,基于录制重放技术的方法需要将用户完整的原始输入(包括像用户密码这样的敏感信息)都录制下来,严重地侵犯了用户隐私。再例如,基于运行时插桩的方法需要修改应用程序的运行环境,但是像网页这样的前端应用程序具体运行在哪个厂家的哪个版本的浏览器上是受最终用户控制的,并不是受开发人员控制的,因此该类方法的通用性较差。又例如,基于影子内存的方法需要对应用程序的代码进行全量插桩,这会引入巨大的性能开销,严重影响应用程序本身的使用和用户体验。因此上述的这些技术在应用到真实的生产环境中时都具有很大的局限性。
程序插桩技术就是在程序中插入探针,然后通过探针的执行来获得程序的控制流和数据流信息,以此来实现程序分析或测试的目的。回调函数就是一个被作为参数传递的函数。回调函数是对函数指针的应用,就是通过使用函数指针来调用一个函数,而函数注册就是把函数指针作为参数传递出去便于别的模块使用的过程;所以函数注册就是为了回调,先注册再回调。栈追踪(英语:stack trace)是对程序运行过程中的某个时间点上活跃栈帧信息的描述。
本发明对JavaScript应用程序生产环境故障追踪和复现作了改进。
本发明说明书引用的相关文献及资料如下:
[1]Sen K,Kalasapur S,Brutch T,et al.Jalangi:A selective record-replayand dynamic analysis framework for JavaScript[C]//Proceedings of the 2013 9thJoint Meeting on Foundations of Software Engineering.2013:488-498.
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海绊糖信息科技有限公司,未经上海绊糖信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111393928.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种梯形太阳电池集成阵
- 下一篇:一种避障方法、装置、设备及存储介质