The invention discloses an extraction procedure no response function stack extraction method and apparatus, including the extraction method: a sub thread, and the thread to establish the first variable and second variables, among them, the second variable is equal to the first variable; the sub thread sends the task to the main thread. Among them, the task is used to modify the first variable in the main thread; the thread at a preset time after the judgment of the first variable and second variables are equal; and if the first variable and second variables are equal, whether the thread of the task is not the main thread execution caused no response, and extracting the main thread of the function stack. The method to realize the program stack extraction function is the main thread of the response occurs through the interaction of cross between threads, the entire extraction process is completely automatic, without artificial participation, reduce the workload, reduce labor costs, improve efficiency.
【技术实现步骤摘要】
本申请涉及移动终端
,特别涉及一种提取程序无响应发生时函数栈的提取方法和装置。
技术介绍
通常,在Android(安卓)系统中,如果应用程序有一段时间响应不灵敏,系统会向用户显示一个对话框,这个对话框被称作应用程序无响应(ApplicationNotResponding,简称ANR)对话框,用户可以选择该对话框上的“等待”按钮而让程序继续运行,也可以选择该对话框上的“强制关闭”按钮来中断程序的运行。因此,在每次出现ANR的情况时,用户都要对应用程序无响应对话框进行处理,从而造成用户的体验感变差。为了提升用户体验,设计流畅合理的应用程序成为必要。开发人员在开发应用程序时,需要通过抓取应用程序无响应来完善该应用程序。相关技术中,抓取应用程序无响应(即ANR)的方法主要是:可先抓取出移动终端(如手机等)上/data/anr目录下的traces.txt文件(即应用程序错误信息反馈文件),之后,通过人工分析该文件里面的函数栈信息,找出属于某个应用程序的ANR。但是存在的问题是,上述抓取ANR的方法,流程比较复杂,并且整个抓取过程主要都是通过人工来操作,增加了开发人员的工作量,增加了人工成本,且效率低。
技术实现思路
本申请的目的旨在至少在一定程度上解决上述的技术问题之一。为此,本申请的第一个目的在于提出了一种提取程序无响应发生时函数栈的提取方法。该方法通过跨线程之间的交互来实现程序无响应发生时主线程中函数栈的提取,整个提取过程完全自动化,无需人工参与,降低了开发人员的工作量,降低了人工成本,提高了效率。本申请的第二个目的在于提出了一种提取程序无响应发生时函数栈的 ...
【技术保护点】
一种提取程序无响应发生时函数栈的提取方法,其特征在于,包括以下步骤:建立子线程,并通过所述子线程建立第一变量和第二变量,其中,所述第二变量等于所述第一变量;所述子线程发送任务至主线程,其中,所述任务用于在被所述主线程执行时修改所述第一变量;所述子线程在预设时间之后判断所述第一变量和第二变量是否相等;以及如果所述第一变量和第二变量相等,则所述子线程判断所述任务未被所述主线程执行而导致程序无响应,并提取所述主线程当前的函数栈。
【技术特征摘要】
1.一种提取程序无响应发生时函数栈的提取方法,其特征在于,包括以下步骤:建立子线程,并通过所述子线程建立第一变量和第二变量,其中,所述第二变量等于所述第一变量;所述子线程发送任务至主线程,其中,所述任务用于在被所述主线程执行时修改所述第一变量;所述子线程在预设时间之后判断所述第一变量和第二变量是否相等;以及如果所述第一变量和第二变量相等,则所述子线程判断所述任务未被所述主线程执行而导致程序无响应,并提取所述主线程当前的函数栈。2.如权利要求1所述的提取程序无响应发生时函数栈的提取方法,其特征在于,还包括:如果所述第一变量和第二变量不相等,则所述子线程判断所述任务已被所述主线程执行。3.如权利要求1所述的提取程序无响应发生时函数栈的提取方法,其特征在于,其中,所述任务在被所述主线程执行时使得第一变量加1之后取余。4.如权利要求1所述的提取程序无响应发生时函数栈的提取方法,其特征在于,在所述建立所述第一变量之后,还包括:将所述第一变量的属性设置为不稳定变量属性值Volatile。5.如权利要求1所述的提取程序无响应发生时函数栈的提取方法,其特征在于,所述任务在被所述主线程执行时,还用于控制所述子线程休眠所述预设时间。6.一种提取程序无响应发生时函数栈的...
【专利技术属性】
技术研发人员:方刚,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛;KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。