CN107391357A - 应用崩溃重现方法、装置及移动终端 - Google Patents
应用崩溃重现方法、装置及移动终端 Download PDFInfo
- Publication number
- CN107391357A CN107391357A CN201710709441.2A CN201710709441A CN107391357A CN 107391357 A CN107391357 A CN 107391357A CN 201710709441 A CN201710709441 A CN 201710709441A CN 107391357 A CN107391357 A CN 107391357A
- Authority
- CN
- China
- Prior art keywords
- information
- event stream
- application
- stream information
- mobile terminal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明提供了一种应用崩溃重现方法、装置及移动终端,涉及互联网技术领域,该方法应用于移动终端,所述移动终端安装有待重现崩溃的应用,所述方法包括:获取与所述应用对应的重现信息,所述重现信息包括所述应用从启动到发生崩溃时移动终端所有输入事件的事件流信息;将所述事件流信息转换为可执行的重现脚本;执行所述重现脚本,以重现所述应用崩溃的情景。本发明提供的应用崩溃重现方法、装置及移动终端,可以提高重现Crash的完整性,便于确定应用发生Crash的原因以及修复应用Crash。
Description
技术领域
本发明涉及互联网技术领域,尤其是涉及一种应用崩溃重现方法、装置及移动终端。
背景技术
目前,智能终端中,用户安装的应用的数量越来越多,应用的来源也是各不相同,这些应用的稳定程度也不一样。对于很多Android应用来说,不可避免的会发生崩溃(Crash)。当Crash发生时,Android系统会杀掉程序,表现就是闪退或者程序已经停止运行,这对用户来说是不友好的,也是开发人员不愿意看到的。
开发人员对于Crash信息的检测与重现很大程度上是依赖于用户的评论与反馈,收集Crash发生时的堆栈信息和一些设备信息等崩溃报告信息。由于Android应用的用户交互通常涉及手势或者传感器交互,这些步骤的重现通常和时序有紧密关系,仅仅依靠自然语言描述并不能够完整重现Crash。
发明内容
有鉴于此,本发明的目的在于提供一种应用崩溃重现方法、装置及移动终端,以提高重现Crash的完整性,便于确定应用发生Crash的原因以及修复应用Crash。
第一方面,本发明实施例提供了一种应用崩溃重现方法,应用于移动终端,所述移动终端安装有待重现崩溃的应用,所述方法包括:
获取与所述应用对应的重现信息,所述重现信息包括所述应用从启动到发生崩溃时移动终端所有输入事件的事件流信息;
将所述事件流信息转换为可执行的重现脚本;
执行所述重现脚本,以重现所述应用崩溃的情景。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述获取与所述应用对应的重现信息,包括:
向监控服务器发送重现信息获取请求,所述重现信息获取请求包括所述应用的名称;
接收所述监控服务器根据所述重现信息获取请求发送的重现文件;其中,所述重现文件包括:操作日志、设备文件和堆栈文件,所述操作日志包括利用Android SDK的getevent工具记录的所述应用从启动到发生崩溃时移动终端所有输入事件的底层事件流信息;
解析所述重现文件,得到重现信息;其中,所述重现信息包括分别与所述操作日志、所述设备文件、所述堆栈文件对应的事件流信息、设备信息、堆栈信息。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述解析所述重现文件,得到重现信息包括:
扫描所述操作日志内的事件流信息;
对所述事件流信息进行时间字段的标准化处理,得到标准化处理后的事件流信息。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述对所述事件流信息进行时间字段的标准化处理,得到标准化处理后的事件流信息,包括:
对于扫描到的每条事件流信息,将所述事件流信息的时间字段中的括号替换为空格,并将所述时间字段中的短横线替换为小数点;
将替换后的时间字段中的空格切割掉,得到标准化处理后的事件流信息。
结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述将所述事件流信息转换为可执行的重现脚本,包括:
按照时间字段对应的时间节点对所述事件流信息进行排序;
将排序后的事件流信息转换为可执行的重现脚本。
结合第一方面的第四种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述将排序后的事件流信息转换为可执行的重现脚本,包括:
利用Translate.jar对排序后的事件流信息进行关键信息的提取,生成可执行的重现脚本;其中,所述关键信息包括相邻时间节点的时间间隔、输入设备名称、输入设备类型、按键扫描码和附加码。
结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述执行所述重现脚本,以重现所述应用崩溃的情景之前,所述方法包括:
启动所述应用;
通过adb shell进入所述移动终端的操作系统,并利用su命令获取所述操作系统的root权限。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第七种可能的实施方式,其中,所述执行所述重现脚本,以重现所述应用崩溃的情景,包括:
加载与所述设备信息、所述堆栈信息对应的运行环境;
在所述运行环境下执行所述重现脚本,以重现所述应用崩溃的情景。
第二方面,本发明实施例还提供一种应用崩溃重现装置,应用于移动终端,所述移动终端安装有待重现崩溃的应用,所述装置包括:
获取模块,用于获取与所述应用对应的重现信息,所述重现信息包括所述应用从启动到发生崩溃时移动终端所有输入事件的事件流信息;
转换模块,用于将所述事件流信息转换为可执行的重现脚本;
重现模块,用于执行所述重现脚本,以重现所述应用崩溃的情景。
第三方面,本发明实施例还提供一种移动终端,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的方法的步骤。
本发明实施例带来了以下有益效果:
本发明实施例中,获取与应用对应的重现信息,该重现信息包括应用从启动到发生崩溃时移动终端所有输入事件的事件流信息;将该事件流信息转换为可执行的重现脚本;执行该重现脚本,以重现该应用崩溃的情景。由于以底层事件流信息的形式记录了移动终端的所有输入事件,并且包含可以精确到微秒的时序关系,即事件流信息可以完整体现用户交互涉及的手势交互以及传感器交互的具体过程,因此,通过执行事件流信息转换的重现脚本来重现应用崩溃的情景,可以提高重现Crash的完整性,便于确定应用发生Crash的原因以及修复应用Crash。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的应用崩溃重现方法的第一种流程示意图;
图2为本发明实施例提供的应用崩溃重现方法中获取重现信息的流程示意图;
图3为本发明实施例提供的重现脚本的示意图;
图4为本发明实施例提供的应用崩溃重现方法的第二种流程示意图;
图5为本发明实施例提供的应用崩溃重现装置的模块组成示意图;
图6为本发明实施例提供的移动终端的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前开发人员对于Crash信息的检测与重现很大程度上是依赖于用户的评论与反馈,由于Android应用的用户交互通常涉及手势或者传感器交互,这些步骤的重现通常和时序有紧密关系,仅仅依靠自然语言描述并不能够完整重现Crash。基于此,本发明实施例提供的一种应用崩溃重现方法、装置及移动终端,可以提高重现Crash的完整性,便于确定应用发生Crash的原因以及修复应用Crash。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种应用崩溃重现方法进行详细介绍。
实施例一:
本发明实施例提供的应用崩溃重现方法应用于移动终端,该移动终端可以是手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、车载电脑等任意可以下载并使用应用的设备,且该移动终端安装有待重现崩溃的应用。
图1为本发明实施例提供的应用崩溃重现方法的第一种流程示意图,如图1所示,以移动终端为手机,且采用安卓Android系统为例,该方法包括以下几个步骤:
步骤S101,获取与待重现崩溃的应用对应的重现信息,该重现信息包括应用从启动到发生崩溃时移动终端所有输入事件的事件流信息。
为了重现应用崩溃的情景,需要先获取重现所需的信息,图2为本发明实施例提供的应用崩溃重现方法中获取重现信息的流程示意图,如图2所示,具体通过以下几个步骤获取重现信息:
步骤S201,向监控服务器发送重现信息获取请求,该重现信息获取请求包括上述应用的名称。
监控服务器内存储有用户端上传的重现信息,该重现信息包括应用从启动到发生崩溃时移动终端所有输入事件的底层事件流信息,还包括设备信息和堆栈信息。为了从监控服务器下载这些重现信息,需要先向监控服务器发送重现信息获取请求,该重现信息获取请求包括上述应用的名称,以便于监控服务器查找并发送与该应用对应的重现信息。
步骤S202,接收监控服务器根据上述重现信息获取请求发送的重现文件。
具体地,重现文件包括:操作日志、设备文件和堆栈文件,该操作日志包括利用Android SDK的getevent工具,通过读取/dev/input/event*文件记录的应用运行过程中所有输入事件的事件流信息。该事件流信息为时间序列化的底层事件流信息,包括手机上所有应用的操作事件流信息,不仅记录了用户通过手机触摸屏产生的输入事件,还记录了所有来自于手机内传感器触发的事件。由于事件流信息记录了用户的操作流程,并且包含可以精确到微秒的时序关系,即事件流信息可以完整体现用户交互涉及的手势交互以及传感器交互的具体过程,因此包含事件流信息的操作日志可以用于完整重现Crash发生时的情景。
步骤S203,解析上述重现文件,得到重现信息。
具体地,重现信息包括分别与操作日志、设备文件、堆栈文件对应的事件流信息、设备信息、堆栈信息。其中,事件流信息用于提供用户交互的过程,设备信息和堆栈信息用于提供重现应用Crash的运行环境。
进一步地,事件流信息为五元组格式,依次包括时间字段、输入设备字段、输入设备类型字段、按键扫描码字段和附加码字段。例如:[100.119269]/dev/input/event4:00020004 000000ef表示一条事件五元组编码(即事件流信息),其中,[100.119269]为时间字段,表示该事件距离手机系统(Android系统)最近一次启动的时间间隔为100.119269秒;/dev/input/event4:字段表示已创建事件的输入设备为event4;0002 0004 000000ef字段分别指事件的type(输入设备类型)、code(按键扫描码)、value(附加码);又如一条事件流信息为[1492524733.054756]/dev/input/event2:0002 0001 00000001,其中,[1492524733.054756]表示该事件距离格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)为1492524733.054756秒,其他字段的含义与前例相同。
设备信息包括应用运行的网络环境、操作系统信息、内存信息等,例如4G环境或者Wi-Fi(WIreless-Fidelity,无线保真)环境。堆栈信息主要包括错误代码行的位置和函数的调用栈,例如堆栈信息:“at com.tit.yankai.crashhander.MainActivity.onClick(MainActivity.java:45)”表示:在包名com.tit.yankai.crashhander下的MainActivity类中调用onClick方法时出现了异常导致崩溃,该行代码在类中的行数是45行。
步骤S102,将上述事件流信息转换为可执行的重现脚本。
为了实现自动重现,需要先将上述事件流信息转换为可执行的重现脚本。考虑到事件流信息的时间精确到微秒,当事件流信息的数据写到文件中时,由于手机等移动终端无缓冲,会导致事件流文件的时间节点乱序,而影响后续的重现过程,本发明实施例中,先按照时间字段对应的时间节点对事件流信息进行排序,再将排序后的事件流信息转换为可执行的重现脚本。
具体地,可以利用Translate.jar对排序后的事件流信息进行关键信息的提取,生成可执行的重现脚本;其中,关键信息包括相邻时间节点的时间间隔、输入设备名称、输入设备类型、按键扫描码和附加码。事件流信息中的value值是16进制的,会有些字母出现,在转换重现脚本时,将value值从16进制转换为10进制。
重现脚本(简称脚本)的第一行表示该脚本包含的事件数目,从第二行开始脚本呈现循环样式,每两行对应一条事件流信息,例如第二行第三行相邻两行对应第一条事件流信息,第四行第五行对应第二条事件流信息。从第二行开始,所有的偶数行只有一个数字,该数字代表与上一个事件的时间间隔;所有的奇数行有四个数字,分别代表事件的输入设备、type、code码以及value值。图3为本发明实施例提供的重现脚本的示意图,如图3所示,第一行的“1549”表示该脚本包含1549个事件,第二行的“0”表示当前事件与前一事件的时间间隔为0秒,第三行的“2,2,1,1”表示事件的输入设备为/dev/input/event2,type为0002,code码为0001,value值为00000001。
通过上述步骤得到的重现脚本以及设备信息、堆栈信息均存储在手机的/data/local/目录下,以便后续重现过程的调用。
步骤S103,执行上述重现脚本,以重现该应用崩溃的情景。
具体地,在执行上述重现脚本之前,需要先启动上述应用,然后通过adb shell进入手机的操作系统,并利用su命令获取该操作系统的root权限。若待重现崩溃的应用涉及到其他应用,则在执行重现脚本之前,应先安装涉及到的各个应用,以完整重现Crash发生时的情景。
在一个实施例中,执行重现脚本的过程具体为:加载与上述设备信息、堆栈信息对应的运行环境,例如Wi-Fi是否连接;通过输入命令行/data/local/translatrEvent.txt/data/local/Replay.exe,在该运行环境下执行重现脚本,以重现应用崩溃的情景。
本发明实施例中,获取与应用对应的重现信息,该重现信息包括应用从启动到发生崩溃时移动终端所有输入事件的事件流信息;将该事件流信息转换为可执行的重现脚本;执行该重现脚本,以重现该应用崩溃的情景。由于以底层事件流信息的形式记录了移动终端的所有输入事件,并且包含可以精确到微秒的时序关系,即事件流信息可以完整体现用户交互涉及的手势交互以及传感器交互的具体过程,因此,通过执行事件流信息转换的重现脚本来重现应用崩溃的情景,可以提高重现Crash的完整性,便于确定应用发生Crash的原因以及修复应用Crash。
图4为本发明实施例提供的应用崩溃重现方法的第二种流程示意图,如图4所示,该方法的第二种流程包括以下几个步骤:
步骤S401,获取与待重现崩溃的应用对应的事件流信息、设备信息、堆栈信息。
步骤S402,按照时间节点对上述事件流信息进行排序。
步骤S403,利用Translate.jar将上述排序后的事件流信息转换为重现脚本。
步骤S404,将该重现脚本、设备信息、堆栈信息存储在已安装上述应用的Android设备上。
步骤S405,在该Android设备上启动应用。
步骤S406,获取该Android设备操作系统的root权限。
步骤S407,通过输入重现命令执行上述重现脚本,以重现应用崩溃的情景。
上述步骤S401至S407的具体执行过程与前述方法的具体执行过程相同,这里不再赘述。
进一步地,由于不同厂商的原因,Android手机采集到的事件流有所差别,不同手机型号的事件流格式表示不一致,如某品牌手机A的事件流格式为:
[17928.197972]/dev/input/event4:0002 0009 00000799
某品牌手机B的事件流格式为:
[1492524733.054756]/dev/input/event2:0002 0001 00000001
某品牌手机A的事件流信息中的时间字段记录的是当前时刻距离手机系统最近一次启动的时间间隔,而某品牌手机B对应的时间字段记录的是时间戳,即从格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至当前时刻的总秒数。另外,在时间字段中,有的采用短横线,有的采用小数点;有的采用中括号,有的采用大括号(花括号)等。
考虑到不同Android机型对应的事件流格式表示不统一,且主要是时间字段的不统一,会影响后续的Crash重现,上述解析重现文件,得到重现信息具体包括:
扫描操作日志内的事件流信息,对该事件流信息进行时间字段的标准化处理,得到标准化处理后的事件流信息。
具体地,对操作日志进行扫描,对于扫描到的每条事件流信息,利用字符串替换的方法,将该事件流信息的时间字段中的括号替换为空格,并将时间字段中的短横线替换为小数点;再将替换后的时间字段中的空格切割掉,即可得到标准化处理后的事件流信息。其中,括号包括在时间字段中可能出现的各种类型的括号,例如大括号、中括号等。例如:对于“[99.578741]”,经括号替换后变为“99.578741”,再对空格进行切割后变为“99.578741”;对于“40-764251/dev/input/event4:0003 0030 0000001e”这种格式的事件流信息,将“-”替换为“.”后,其时间字段变为“40.764251”。最终将所有的时间字段变为统一的格式,例如“99.578741/dev/input/event4:0003 0030 0000001e”。标准化处理后的事件流信息以统一的五元组格式表示:时间字段、输入设备字段、输入设备类型字段、按键扫描码字段和附加码字段。
这样,通过对事件流格式的标准化处理,可以得到统一的事件流五元组格式,解决了不同Android设备事件流格式不一致的问题,可以防止在重现应用Crash过程中,对事件流信息进行关键信息提取时,相邻事件间出现时间间隔为负数的发生,从而提高了重现成功率。
实施例二:
图5为本发明实施例提供的应用崩溃重现装置的模块组成示意图,该装置应用于移动终端,该移动终端安装有待重现崩溃的应用,如图5所示,该装置包括:
获取模块51,用于获取与应用对应的重现信息,该重现信息包括应用从启动到发生崩溃时移动终端所有输入事件的事件流信息;
转换模块52,用于将上述事件流信息转换为可执行的重现脚本;
重现模块53,用于执行上述重现脚本,以重现上述应用崩溃的情景。
本发明实施例中,获取与应用对应的重现信息,该重现信息包括应用从启动到发生崩溃时移动终端所有输入事件的事件流信息;将该事件流信息转换为可执行的重现脚本;执行该重现脚本,以重现该应用崩溃的情景。由于以底层事件流信息的形式记录了移动终端的所有输入事件,并且包含可以精确到微秒的时序关系,即事件流信息可以完整体现用户交互涉及的手势交互以及传感器交互的具体过程,因此,通过执行事件流信息转换的重现脚本来重现应用崩溃的情景,可以提高重现Crash的完整性,便于确定应用发生Crash的原因以及修复应用Crash。
实施例三:
参见图6,本发明实施例还提供一种移动终端100,包括:处理器40,存储器41,总线42和通信接口43,所述处理器40、通信接口43和存储器41通过总线42连接;处理器40用于执行存储器41中存储的可执行模块,例如计算机程序。
其中,存储器41可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口43(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线42可以是ISA总线、PCI总线或EISA总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器41用于存储程序,所述处理器40在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器40中,或者由处理器40实现。
处理器40可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器40中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器40可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现成可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器41,处理器40读取存储器41中的信息,结合其硬件完成上述方法的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置及移动终端的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明实施例提供的应用崩溃重现装置及移动终端,与上述实施例提供的应用崩溃重现方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本发明实施例所提供的进行应用崩溃重现方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法、装置及移动终端,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种应用崩溃重现方法,其特征在于,应用于移动终端,所述移动终端安装有待重现崩溃的应用,所述方法包括:
获取与所述应用对应的重现信息,所述重现信息包括所述应用从启动到发生崩溃时移动终端所有输入事件的事件流信息;
将所述事件流信息转换为可执行的重现脚本;
执行所述重现脚本,以重现所述应用崩溃的情景。
2.根据权利要求1所述的方法,其特征在于,所述获取与所述应用对应的重现信息,包括:
向监控服务器发送重现信息获取请求,所述重现信息获取请求包括所述应用的名称;
接收所述监控服务器根据所述重现信息获取请求发送的重现文件;其中,所述重现文件包括:操作日志、设备文件和堆栈文件,所述操作日志包括利用Android SDK的getevent工具记录的所述应用从启动到发生崩溃时移动终端所有输入事件的底层事件流信息;
解析所述重现文件,得到重现信息;其中,所述重现信息包括分别与所述操作日志、所述设备文件、所述堆栈文件对应的事件流信息、设备信息、堆栈信息。
3.根据权利要求2所述的方法,其特征在于,所述解析所述重现文件,得到重现信息包括:
扫描所述操作日志内的事件流信息;
对所述事件流信息进行时间字段的标准化处理,得到标准化处理后的事件流信息。
4.根据权利要求3所述的方法,其特征在于,所述对所述事件流信息进行时间字段的标准化处理,得到标准化处理后的事件流信息,包括:
对于扫描到的每条事件流信息,将所述事件流信息的时间字段中的括号替换为空格,并将所述时间字段中的短横线替换为小数点;
将替换后的时间字段中的空格切割掉,得到标准化处理后的事件流信息。
5.根据权利要求1所述的方法,其特征在于,所述将所述事件流信息转换为可执行的重现脚本,包括:
按照时间字段对应的时间节点对所述事件流信息进行排序;
将排序后的事件流信息转换为可执行的重现脚本。
6.根据权利要求5所述的方法,其特征在于,所述将排序后的事件流信息转换为可执行的重现脚本,包括:
利用Translate.jar对排序后的事件流信息进行关键信息的提取,生成可执行的重现脚本;其中,所述关键信息包括相邻时间节点的时间间隔、输入设备名称、输入设备类型、按键扫描码和附加码。
7.根据权利要求1所述的方法,其特征在于,所述执行所述重现脚本,以重现所述应用崩溃的情景之前,所述方法包括:
启动所述应用;
通过adb shell进入所述移动终端的操作系统,并利用su命令获取所述操作系统的root权限。
8.根据权利要求2所述的方法,其特征在于,所述执行所述重现脚本,以重现所述应用崩溃的情景,包括:
加载与所述设备信息、所述堆栈信息对应的运行环境;
在所述运行环境下执行所述重现脚本,以重现所述应用崩溃的情景。
9.一种应用崩溃重现装置,其特征在于,应用于移动终端,所述移动终端安装有待重现崩溃的应用,所述装置包括:
获取模块,用于获取与所述应用对应的重现信息,所述重现信息包括所述应用从启动到发生崩溃时移动终端所有输入事件的事件流信息;
转换模块,用于将所述事件流信息转换为可执行的重现脚本;
重现模块,用于执行所述重现脚本,以重现所述应用崩溃的情景。
10.一种移动终端,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710709441.2A CN107391357A (zh) | 2017-08-17 | 2017-08-17 | 应用崩溃重现方法、装置及移动终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710709441.2A CN107391357A (zh) | 2017-08-17 | 2017-08-17 | 应用崩溃重现方法、装置及移动终端 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107391357A true CN107391357A (zh) | 2017-11-24 |
Family
ID=60353666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710709441.2A Pending CN107391357A (zh) | 2017-08-17 | 2017-08-17 | 应用崩溃重现方法、装置及移动终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391357A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943703A (zh) * | 2017-11-29 | 2018-04-20 | 北京小米移动软件有限公司 | 终端设备崩溃数据的获取方法、装置和系统 |
CN108009073A (zh) * | 2017-12-21 | 2018-05-08 | 深圳市金立通信设备有限公司 | 由日志复现触控轨迹的方法、终端及计算机可读存储介质 |
CN108763050A (zh) * | 2018-04-03 | 2018-11-06 | 北京奇艺世纪科技有限公司 | 一种应用内存泄露的检测方法和装置 |
CN110162966A (zh) * | 2019-04-11 | 2019-08-23 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112307405A (zh) * | 2020-11-16 | 2021-02-02 | Oppo广东移动通信有限公司 | 跨设备的应用接力方法、装置、设备、系统及存储介质 |
CN112559277A (zh) * | 2019-09-25 | 2021-03-26 | 北京百度网讯科技有限公司 | 崩溃信息的处理方法、系统、车载设备、服务器、电子设备及存储介质 |
CN113760741A (zh) * | 2021-03-25 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种应用测试方法和装置 |
CN113760728A (zh) * | 2021-01-22 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 应用测试的方法和装置 |
US12026088B2 (en) | 2022-05-11 | 2024-07-02 | International Business Machines Corporation | Reproduction client application issue based on layered data replay |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184138A (zh) * | 2011-05-19 | 2011-09-14 | 广东威创视讯科技股份有限公司 | 一种软件错误自动重现和定位的方法及系统 |
CN104348658A (zh) * | 2013-08-08 | 2015-02-11 | 阿里巴巴集团控股有限公司 | 故障报告生成方法及相关的系统 |
CN104614601A (zh) * | 2014-12-26 | 2015-05-13 | 惠州Tcl移动通信有限公司 | 一种终端故障定位方法、装置及系统 |
CN105718354A (zh) * | 2016-01-20 | 2016-06-29 | 上海斐讯数据通信技术有限公司 | 一种故障信息的重现方法和重现装置 |
CN105868083A (zh) * | 2015-01-21 | 2016-08-17 | 中兴通讯股份有限公司 | 一种回放用户操作的方法和装置 |
CN106528409A (zh) * | 2016-10-20 | 2017-03-22 | 腾讯音乐娱乐(深圳)有限公司 | 一种程序崩溃问题查找方法和装置 |
-
2017
- 2017-08-17 CN CN201710709441.2A patent/CN107391357A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102184138A (zh) * | 2011-05-19 | 2011-09-14 | 广东威创视讯科技股份有限公司 | 一种软件错误自动重现和定位的方法及系统 |
CN104348658A (zh) * | 2013-08-08 | 2015-02-11 | 阿里巴巴集团控股有限公司 | 故障报告生成方法及相关的系统 |
CN104614601A (zh) * | 2014-12-26 | 2015-05-13 | 惠州Tcl移动通信有限公司 | 一种终端故障定位方法、装置及系统 |
CN105868083A (zh) * | 2015-01-21 | 2016-08-17 | 中兴通讯股份有限公司 | 一种回放用户操作的方法和装置 |
CN105718354A (zh) * | 2016-01-20 | 2016-06-29 | 上海斐讯数据通信技术有限公司 | 一种故障信息的重现方法和重现装置 |
CN106528409A (zh) * | 2016-10-20 | 2017-03-22 | 腾讯音乐娱乐(深圳)有限公司 | 一种程序崩溃问题查找方法和装置 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107943703A (zh) * | 2017-11-29 | 2018-04-20 | 北京小米移动软件有限公司 | 终端设备崩溃数据的获取方法、装置和系统 |
CN107943703B (zh) * | 2017-11-29 | 2021-03-30 | 北京小米移动软件有限公司 | 终端设备崩溃数据的获取方法、装置和系统 |
CN108009073A (zh) * | 2017-12-21 | 2018-05-08 | 深圳市金立通信设备有限公司 | 由日志复现触控轨迹的方法、终端及计算机可读存储介质 |
CN108763050A (zh) * | 2018-04-03 | 2018-11-06 | 北京奇艺世纪科技有限公司 | 一种应用内存泄露的检测方法和装置 |
CN110162966A (zh) * | 2019-04-11 | 2019-08-23 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN110162966B (zh) * | 2019-04-11 | 2022-12-27 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112559277A (zh) * | 2019-09-25 | 2021-03-26 | 北京百度网讯科技有限公司 | 崩溃信息的处理方法、系统、车载设备、服务器、电子设备及存储介质 |
CN112307405A (zh) * | 2020-11-16 | 2021-02-02 | Oppo广东移动通信有限公司 | 跨设备的应用接力方法、装置、设备、系统及存储介质 |
CN112307405B (zh) * | 2020-11-16 | 2024-03-22 | Oppo广东移动通信有限公司 | 跨设备的应用接力方法、装置、设备、系统及存储介质 |
CN113760728A (zh) * | 2021-01-22 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 应用测试的方法和装置 |
CN113760741A (zh) * | 2021-03-25 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种应用测试方法和装置 |
US12026088B2 (en) | 2022-05-11 | 2024-07-02 | International Business Machines Corporation | Reproduction client application issue based on layered data replay |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391357A (zh) | 应用崩溃重现方法、装置及移动终端 | |
CN107491383A (zh) | 应用崩溃操作日志的捕获方法、装置及移动终端 | |
CN110113196B (zh) | 一种协议配置方法、装置、设备及介质 | |
CN111506579B (zh) | 一种智能合约代码的生成方法、程序及设备 | |
CN101902756A (zh) | M2m业务平台及其工作方法 | |
CN103412757A (zh) | 移动应用个性化集成框架的实现方法 | |
CN111241182A (zh) | 数据处理方法和装置、存储介质和电子装置 | |
CN106409295A (zh) | 从自然语音信息中识别时间信息的方法和装置 | |
CN110502520B (zh) | 一种数据入库的方法、系统、设备及计算机可读存储介质 | |
CN107451112B (zh) | 表格工具数据检查方法、装置、终端设备及存储介质 | |
CN111399840A (zh) | 一种模块开发方法及装置 | |
CN105389184A (zh) | 产品界面信息的配置方法及装置 | |
CN113268243A (zh) | 内存预测方法及装置、存储介质、电子设备 | |
CN112926008A (zh) | 生成表单页面的方法、装置、电子设备和存储介质 | |
CN109034880A (zh) | 收入预测方法及装置 | |
CN110134380B (zh) | 一种基于模板引擎的代码生成方法、装置及电子设备 | |
CN112560413B (zh) | 基于配置模式的报表扩展方法、装置和设备 | |
CN108959294A (zh) | 一种访问搜索引擎的方法和装置 | |
CN113746840A (zh) | Json格式报文生成方法及装置 | |
CN110058849A (zh) | 流程图的生成方法、装置、计算机设备以及存储介质 | |
CN106293658A (zh) | 一种界面组件生成方法及其设备 | |
CN103561113A (zh) | Web Service接口的生成方法及装置 | |
CN111209028A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN116346777A (zh) | 一种字典树域名匹配方法、装置、设备及存储介质 | |
CN115580647A (zh) | 一种服务调用链路追踪方法、系统及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171124 |
|
RJ01 | Rejection of invention patent application after publication |