[发明专利]提取程序无响应发生时函数栈的提取方法和装置有效
申请号: | 201510689604.6 | 申请日: | 2015-10-22 |
公开(公告)号: | CN106610881B | 公开(公告)日: | 2019-05-07 |
发明(设计)人: | 方刚 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 北京清亦华知识产权代理事务所(普通合伙) 11201 | 代理人: | 张大威 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 提取 程序 响应 发生 函数 方法 装置 | ||
本申请公开了一种提取程序无响应时函数栈的提取方法和装置,其中提取方法包括:建立子线程,并通过所述子线程建立第一变量和第二变量,其中,所述第二变量等于所述第一变量;所述子线程发送任务至主线程,其中,所述任务用于在被所述主线程执行时修改所述第一变量;所述子线程在预设时间之后判断所述第一变量和第二变量是否相等;以及如果所述第一变量和第二变量相等,则所述子线程判断所述任务未被所述主线程执行而导致程序无响应,并提取所述主线程当前的函数栈。该方法通过跨线程之间的交互来实现程序无响应发生时主线程中函数栈的提取,整个提取过程完全自动化,无需人工参与,降低了开发人员的工作量,降低了人工成本,提高了效率。
技术领域
本申请涉及移动终端技术领域,特别涉及一种提取程序无响应发生时函数栈的提取方法和装置。
背景技术
通常,在Android(安卓)系统中,如果应用程序有一段时间响应不灵敏,系统会向用户显示一个对话框,这个对话框被称作应用程序无响应(Application Not Responding,简称ANR)对话框,用户可以选择该对话框上的“等待”按钮而让程序继续运行,也可以选择该对话框上的“强制关闭”按钮来中断程序的运行。因此,在每次出现ANR的情况时,用户都要对应用程序无响应对话框进行处理,从而造成用户的体验感变差。
为了提升用户体验,设计流畅合理的应用程序成为必要。开发人员在开发应用程序时,需要通过抓取应用程序无响应来完善该应用程序。相关技术中,抓取应用程序无响应(即ANR)的方法主要是:可先抓取出移动终端(如手机等)上/data/anr目录下的traces.txt文件(即应用程序错误信息反馈文件),之后,通过人工分析该文件里面的函数栈信息,找出属于某个应用程序的ANR。
但是存在的问题是,上述抓取ANR的方法,流程比较复杂,并且整个抓取过程主要都是通过人工来操作,增加了开发人员的工作量,增加了人工成本,且效率低。
发明内容
本申请的目的旨在至少在一定程度上解决上述的技术问题之一。
为此,本申请的第一个目的在于提出了一种提取程序无响应发生时函数栈的提取方法。该方法通过跨线程之间的交互来实现程序无响应发生时主线程中函数栈的提取,整个提取过程完全自动化,无需人工参与,降低了开发人员的工作量,降低了人工成本,提高了效率。
本申请的第二个目的在于提出了一种提取程序无响应发生时函数栈的提取装置。
为达上述目的,根据本申请第一方面的实施例提出了一种提取程序无响应发生时函数栈的提取方法,包括以下步骤:建立子线程,并通过所述子线程建立第一变量和第二变量,其中,所述第二变量等于所述第一变量;所述子线程发送任务至主线程,其中,所述任务用于在被所述主线程执行时修改所述第一变量;所述子线程在预设时间之后判断所述第一变量和第二变量是否相等;以及如果所述第一变量和第二变量相等,则所述子线程判断所述任务未被所述主线程执行而导致程序无响应,并提取所述主线程当前的函数栈。
本申请实施例的提取程序无响应发生时函数栈的提取方法,可建立子线程,并通过子线程发送任务至主线程,并在预设时间后子线程判断任务有无被主线程执行,如果判断出上述任务没有被主线程执行则提取上述主线程当前的函数栈,即通过跨线程之间的交互来实现程序无响应发生时主线程中函数栈的提取,整个提取过程完全自动化,无需人工参与,降低了开发人员的工作量,降低了人工成本,提高了效率,并且通过将提取到的函数栈提交到移动后台,方便了开发人员发现并解决问题。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510689604.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:处理器芯片仿真器
- 下一篇:新型以太网接口SM510监控系统