CN107943703B - 终端设备崩溃数据的获取方法、装置和系统 - Google Patents

终端设备崩溃数据的获取方法、装置和系统 Download PDF

Info

Publication number
CN107943703B
CN107943703B CN201711227570.4A CN201711227570A CN107943703B CN 107943703 B CN107943703 B CN 107943703B CN 201711227570 A CN201711227570 A CN 201711227570A CN 107943703 B CN107943703 B CN 107943703B
Authority
CN
China
Prior art keywords
script
terminal equipment
information
preset
crash
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.)
Active
Application number
CN201711227570.4A
Other languages
English (en)
Other versions
CN107943703A (zh
Inventor
董俊杰
张昭
朴英敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Xiaomi Mobile Software Co Ltd
Original Assignee
Beijing Xiaomi Mobile Software Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Xiaomi Mobile Software Co Ltd filed Critical Beijing Xiaomi Mobile Software Co Ltd
Priority to CN201711227570.4A priority Critical patent/CN107943703B/zh
Publication of CN107943703A publication Critical patent/CN107943703A/zh
Application granted granted Critical
Publication of CN107943703B publication Critical patent/CN107943703B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开提供一种终端设备崩溃数据的获取方法、装置和系统,以解决相关技术中获取终端设备的崩溃信息不够便捷的问题。所述方法应用于云服务器,包括:获取开发者上传的脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;将所述脚本信息发送给所述终端设备;接收所述终端设备运行所述脚本后返回的运行结果,所述运行结果包括所述终端设备中与所述崩溃事件相关的数据。

Description

终端设备崩溃数据的获取方法、装置和系统
技术领域
本公开涉及数据处理领域,尤其涉及一种终端设备崩溃数据的获取方法、装置和系统。
背景技术
随着终端设备系统的发展,系统也越来越复杂,系统上集成的软件越来越多。在系统运行中,当某个软件发生错误导致软件崩溃时,系统能够收集到软件的崩溃信息,这些崩溃信息包括:软件崩溃前的Log输出、软件崩溃时所有线程的寄存器和调用堆栈信息、软件的内存布局信息等等。
开发者获取这些信息后,可以根据这些崩溃信息分析和判断软件崩溃的原因,进而进一步找到解决问题的方法。但是,由于软件本身的复杂性,开发者终端设备提供的崩溃信息可能不能准确的判定错误原因,从而不能解决崩溃问题的办法。
相关技术中,开发者为了准确定位错误原因,需要在软件中加入一些Log输出代码,并重新编译和发布软件。在用户的终端设备中安装这些新发布的软件后,经过一段时间的使用,这些带有Log输出代码的软件才能收集到更多的崩溃信息,进一步开发者根据最新收到的崩溃信息判断崩溃的原因并对软件或系统进行修复。
有些崩溃原因比较复杂,开发者需要多次更新软件中的Log输出代码,并在终端设备多次安装最新版的软件后,才能获取到解决崩溃的有效崩溃数据。由上可知,相关技术中获取终端设备的崩溃信息不够便捷,解决崩溃问题的迭代周期较长。
发明内容
本公开提供一种终端设备崩溃数据的获取方法、装置和系统,以解决相关技术中获取终端设备的崩溃信息不够便捷的问题。
根据本公开实施例的第一方面,提供一种终端设备崩溃数据的获取方法,所述方法应用于云服务器,包括:
获取开发者上传的脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
将所述脚本信息发送给所述终端设备;
接收所述终端设备运行所述脚本后返回的运行结果,所述运行结果包括所述终端设备中与所述崩溃事件相关的数据。
可选的,在将所述脚本信息发送给所述终端设备之前,所述方法还包括:
根据所述脚本信息模拟所述脚本对应的执行环境;
在所述执行环境中运行所述脚本,以对所述脚本信息进行验证;
若验证确定所述脚本信息出现错误,则发出请求更正所述脚本信息的提示信息。
根据本公开实施例的第二方面,提供一种终端设备崩溃数据的获取方法,所述方法应用于终端设备,包括:
从云服务器下载脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
检测所述终端设备是否发生预设崩溃事件;
若所述终端设备发生所述预设崩溃事件,则运行与所述预设崩溃事件相匹配的目标脚本;
将运行所述目标脚本得到的运行结果上传至所述云服务器,所述运行结果包括所述终端设备中与所述预设崩溃事件相关的数据。
可选的,所述脚本信息还包括基础数据脚本,所述基础数据脚本在被所述目标脚本调用时,为所述目标脚本的运行提供基础数据信息;
其中,所述基础数据信息包括以下至少一种数据信息:
所述目标脚本访问的变量在内存中的位置信息;
在所述目标脚本读取成员数据时,所述成员相对于所述成员所在的结构体的偏移信息。
可选的,所述脚本信息还包括所述脚本匹配的终端设备类型;
所述从云服务器下载脚本信息,包括:
向所述云服务器查询与所述终端设备类型相匹配的脚本;
从所述云服务器下载与所述终端设备类型相匹配的脚本。
可选的,所述检测所述终端设备是否发生预设崩溃事件,包括:
检测所述终端设备发生崩溃事件时产生的信号;
确定所述信号是否属于预设信号类型,所述预设信号类型是基于触发所述脚本运行的终端设备崩溃事件匹配的信号类型;
若所述信号属于所述预设信号类型,则确定所述终端设备发生所述预设崩溃事件。
可选的,所述检测所述终端设备是否发生预设崩溃事件,包括:
检测与所述终端设备崩溃事件相关的数据中是否包括预设字符串,所述预设字符串是基于触发所述脚本运行的终端设备崩溃事件匹配的字符串;
若与所述终端设备崩溃事件相关的数据中包括所述预设字符串,则确定所述终端设备发生所述预设崩溃事件。
根据本公开实施例的第三方面,提供一种终端设备崩溃数据的获取装置,所述装置应用于云服务器,包括:
获取模块,用于获取开发者上传的脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
发送模块,用于将所述脚本信息发送给所述终端设备;
接收模块,用于接收所述终端设备运行所述脚本后返回的运行结果,所述运行结果包括所述终端设备中与所述崩溃事件相关的数据。
可选的,所述装置还包括:
环境模拟模块,用于根据所述脚本信息模拟所述脚本对应的执行环境;
模拟执行模块,用于在所述执行环境中运行所述脚本,以对所述脚本信息进行验证;
提醒模块,用于在验证确定所述脚本信息出现错误时,发出请求更正所述脚本信息的提示信息。
根据本公开实施例的第四方面,提供一种终端设备崩溃数据的获取装置,所述装置应用于终端设备,包括:
下载模块,用于从云服务器下载脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
检测模块,用于检测所述终端设备是否发生预设崩溃事件;
执行模块,用于在所述终端设备发生所述预设崩溃事件时,运行与所述预设崩溃事件相匹配的目标脚本;
上传模块,用于将运行所述目标脚本得到的运行结果上传至所述云服务器,所述运行结果包括所述终端设备中与所述预设崩溃事件相关的数据。
可选的,所述脚本信息还包括基础数据脚本,所述基础数据脚本在被所述目标脚本调用时,为所述目标脚本的运行提供基础数据信息;
其中,所述基础数据信息包括以下至少一种数据信息:
所述目标脚本访问的变量在内存中的位置信息;
在所述目标脚本读取成员数据时,所述成员相对于所述成员所在的结构体的偏移信息。
可选的,所述脚本信息还包括所述脚本匹配的终端设备类型;
所述下载模块包括:
查询子模块,用于向所述云服务器查询与所述终端设备类型相匹配的脚本;
下载子模块,用于从所述云服务器下载与所述终端设备类型相匹配的脚本。
可选的,所述检测模块,包括:
信号检测子模块,用于检测所述终端设备发生崩溃事件时产生的信号;
信号确定子模块,用于确定所述信号是否属于预设信号类型,所述预设信号类型是基于触发所述脚本运行的终端设备崩溃事件匹配的信号类型;
第一事件确定子模块,用于在所述信号属于所述预设信号类型,确定所述终端设备发生所述预设崩溃事件。
可选的,所述检测模块,包括:
字符串检测子模块,用于检测与所述终端设备崩溃事件相关的数据中是否包括预设字符串,所述预设字符串是基于触发所述脚本运行的终端设备崩溃事件匹配的字符串;
第二事件确定子模块,用于在与所述终端设备崩溃事件相关的数据中包括所述预设字符串时,确定所述终端设备发生所述预设崩溃事件。
根据本公开实施例的第五方面,提供一种终端设备崩溃数据的获取装置,所述装置应用于云服务器,包括:
处理器;用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取开发者上传的脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
将所述脚本信息发送给所述终端设备;
接收所述终端设备运行所述脚本后返回的运行结果,所述运行结果包括所述终端设备中与所述崩溃事件相关的数据。
根据本公开实施例的第六方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现第一方面所述方法的步骤。
根据本公开实施例的第七方面,提供一种终端设备崩溃数据的获取装置,所述装置应用于终端设备,包括:
处理器;用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
从云服务器下载脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
检测所述终端设备是否发生预设崩溃事件;
若所述终端设备发生所述预设崩溃事件,则运行与所述预设崩溃事件相匹配的目标脚本;
将运行所述目标脚本得到的运行结果上传至所述云服务器,所述运行结果包括所述终端设备中与所述预设崩溃事件相关的数据。
根据本公开实施例的第八方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现第二方面所述终端设备崩溃数据的获取方法的步骤。
根据本公开实施例的第九方面,提供一种终端设备崩溃数据的获取系统,所述系统包括云服务器和终端设备;
所述云服务器包括所述终端设备崩溃数据的获取装置;
所述终端设备包括所述终端设备崩溃数据的获取装置。
本公开的实施例提供的技术方案可以包括以下有益效果:
开发者将包括脚本和触发所述脚本运行的终端设备崩溃事件的脚本信息上传到云服务器;终端设备在从云服务器下载该脚本信息后,在发生预设崩溃事件时运行该脚本,并通过脚本将与崩溃事件有关的数据返回云服务器,以供开发者查看。在终端设备中出现新的崩溃问题时,开发者可以通过更新脚本获取与终端设备崩溃事件有关数据,获取终端设备的崩溃信息更加便捷。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种终端设备崩溃数据的获取方法的流程图。
图2是根据一示例性实施例示出的另一种终端设备崩溃数据的获取方法的流程图。
图3是根据一示例性实施例示出的另一种终端设备崩溃数据的获取方法的信令流程图。
图4是根据一示例性实施例示出的一种终端设备崩溃数据的获取装置的框图。
图5是根据一示例性实施例示出的另一种终端设备崩溃数据的获取装置的框图。
图6是根据一示例性实施例示出的另一种终端设备崩溃数据的获取装置的框图。
图7是根据一示例性实施例示出的另一种终端设备崩溃数据的获取装置的框图。
图8是根据一示例性实施例示出的另一种终端设备崩溃数据的获取装置的框图。
图9是根据一示例性实施例示出的一种终端设备崩溃数据的获取系统的框图。
图10是根据一示例性实施例示出的一种终端设备的结构框图。
图11是根据一示例性实施例示出的一种云服务器的结构框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种终端设备崩溃数据的获取方法的流程图。所述方法应用于云服务器,包括:
S11,获取开发者上传的脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件。
其中,所述云服务器可以提供用于交互的网页。开发者将编写好的脚本通过网页上传至云服务器。除了上传脚本和触发所述脚本运行的终端设备崩溃事件以外,开发者还可以填写脚本名称,脚本适用的终端设备类型,脚本适用的应用软件类型,脚本适用的系统类型。
脚本的内容可以包括两部分。第一部分为用于标记脚本的执行条件的代码,即,在终端设备中发生何种崩溃的情况下运行该脚本。例如,需要在设置程序发生了内存访问错误时运行该脚本,则可以这样描述:
Package-name=com.android.settings
Reason=SIG_MAP
上述代码表示,脚本在设置程序发生SIG_MAP信号时(即访问非法内存时)运行。
第二部分为用于搜集与崩溃事件相关的数据代码,这部分代码用于访问崩溃时系统的内存信息和已存储的各类寄存器信息。
S12,将所述脚本信息发送给所述终端设备。
示例地,云服务器可以通过无线的方式通信,终端设备可以接入基于通信标准的无线网络,如WiFi,3G、4G或5G,或它们的组合。
S13,接收所述终端设备运行所述脚本后返回的运行结果,所述运行结果包括所述终端设备中与所述崩溃事件相关的数据。
此外,该脚本还可以对获取到的与奔溃事件有关的数据进行初步分析,并得到分析结果,以便开发者进一步的查验。
在相关技术中,若终端设备中出现新的崩溃问题,开发者需要针对该新的崩溃问题重新编写系统或软件中的代码以获取与该崩溃问题有关的数据,终端设备侧需要更新系统或者软件,再将结果返回给开发者。针对一些难以解决的崩溃问题,可能需要开发者多次编写系统或者软件代码,终端设备侧多次更新系统或软件,针对崩溃问题的迭代差错过程操作不便。
而通过本公开实施例所示的技术方案,开发者将包括脚本和触发所述脚本运行的终端设备崩溃事件的脚本信息上传到云服务器;终端设备在从云服务器下载该脚本信息后,在发生预设崩溃事件时运行该脚本,并通过脚本将与崩溃事件有关的数据返回云服务器,以供开发者查看。在终端设备中出现新的崩溃问题时,开发者可以通过更新脚本获取与终端设备崩溃事件有关数据,获取终端设备的崩溃信息更加便捷。
可选的,在将所述脚本信息发送给所述终端设备之前,所述方法还包括:根据所述脚本信息模拟所述脚本对应的执行环境;在所述执行环境中运行所述脚本,以对所述脚本信息进行验证;若验证确定所述脚本信息出现错误,则发出请求更正所述脚本信息的提示信息。
也就是说,云服务器可以自动对开发者上传的脚本信息验错,并在脚本信息错误时通知开发者修改。这样,能够进一步保证脚本的准确性,提高解决终端设备崩溃问题的效率。
图2是根据一示例性实施例示出的另一种终端设备崩溃数据的获取方法的流程图。所述方法应用于终端设备,包括:
S21,从云服务器下载脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件。
在一种可选的实施方式中,所述脚本信息还包括所述脚本匹配的终端设备类型;所述从云服务器下载脚本信息,包括:向所述云服务器查询与所述终端设备类型相匹配的脚本;从所述云服务器下载与所述终端设备类型相匹配的脚本。
例如,该终端设备可以是手机。市面上的手机有多种型号,不同型号的手机对应安装的系统可能不同,不同型号手机出现软件或者系统的原因不同。因此,开发者在解决手机崩溃问题时,需针对不同手机编写不同的脚本,并上传服务器。
终端设备可以向云服务器主动查询是否有针对本机型号的新脚本,并在查询到匹配的脚本后及时下载,以加快针对崩溃事件的查错进程。此外,终端设备还可以接受云服务器推送的脚本。
S22,检测所述终端设备是否发生预设崩溃事件。
在一种可选的实施方式中,所述检测所述终端设备是否发生预设崩溃事件,包括:检测所述终端设备发生崩溃事件时产生的信号;确定所述信号是否属于预设信号类型,所述预设信号类型是基于触发所述脚本运行的终端设备崩溃事件匹配的信号类型;若所述信号属于所述预设信号类型,则确定所述终端设备发生所述预设崩溃事件。
在另一种可选的实施方式中,所述检测所述终端设备是否发生预设崩溃事件,包括:检测与所述终端设备崩溃事件相关的数据中是否包括预设字符串,所述预设字符串是基于触发所述脚本运行的终端设备崩溃事件匹配的字符串;若与所述终端设备崩溃事件相关的数据中包括所述预设字符串,则确定所述终端设备发生所述预设崩溃事件。
例如,在与所述终端设备崩溃事件相关的数据中包括特定的软件库字符串,有特定的Log等情况下,确定所述终端设备发生预设崩溃事件。
S23,若所述终端设备发生所述预设崩溃事件,则运行与所述预设崩溃事件相匹配的目标脚本。
值得说明的是,每一脚本匹配有触发所述脚本运行的终端设备崩溃事件,即触发脚本运行的条件。在成功下载所述脚本信息后,可以将触发脚本运行的条件写入终端设备本地表格中,以便debug report组件能够在检测到发生预设崩溃事件时快速触匹配并触发运行对应的脚本。
S24,将运行所述目标脚本得到的运行结果上传至所述云服务器,所述运行结果包括所述终端设备中与所述预设崩溃事件相关的数据。
由于对崩溃信息处理的时间有限,在具体实施时,可以将该运行结果以保存在终端设备的临时目录中,然后再上传至云服务器。
脚本语言可以选择多种,比如java,python,lua等等。这些脚本语言的执行器都是开源的,而且可以方便的嵌入到已有的软件中。在具体实施时,可以优先考虑lua脚本,这种脚本的执行器小巧,其容量一般在数百K,而且容易定制。
在一种可选的实施方式中,所述终端设备中通过预先设置debug report(调试报告)组件执行下载脚本信息的步骤。在debug report组件内部有为脚本提供的一系列的软件接口。通过这些软件接口,脚本能够访问到崩溃程序的内存。
值得说明的是,若脚本需读取软件中的某个变量,脚本需要准确的知晓这个变量在内存中的位置。再比如,要读取一个结构体对象内一个成员数据时,就需要知道该成员在结构体内的偏移位置等等。针对这种情况,开发者在编辑脚本时往往需要复杂的计算,以及大量的信息查询,才能使脚本的代码准确无误。
为便于开发者的操作,在另一种可选的实施方式中,所述脚本信息还包括基础数据脚本,所述基础数据脚本在被所述目标脚本调用时,为所述目标脚本的运行提供基础数据信息;其中,所述基础数据信息包括以下至少一种数据信息:所述目标脚本访问的变量在内存中的位置信息;在所述目标脚本读取成员数据时,所述成员相对于所述成员所在的结构体的偏移信息。
这样,针对数据内部的结构和偏移不同的软件版本,可以根据不同版本提供不同的基础数据脚本。开发者在编写用于获取崩溃事件有关数据的脚本时,可以直接嵌入调用这些基础数据脚本,简少了开发者编写脚本的工作量。
图3是根据一示例性实施例示出的另一种终端设备崩溃数据的获取方法的信令流程图。所述方法包括:
S31,云服务器获取开发者上传的脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件。
S32,云服务器将所述脚本信息发送给所述终端设备。
S33,终端设备接收从云服务器发送的所述脚本信息。
S34,终端设备检测所述终端设备是否发生预设崩溃事件。
S35,终端设备在所述终端设备发生所述预设崩溃事件时,运行与所述预设崩溃事件相匹配的目标脚本。
S36,终端设备将运行所述目标脚本得到的运行结果上传至所述云服务器,所述运行结果包括所述终端设备中与所述预设崩溃事件相关的数据。
S37,云服务器接收所述终端设备运行所述脚本后返回的运行结果。
本公开的实施例提供的技术方案可以包括以下有益效果:
开发者将包括脚本和触发所述脚本运行的终端设备崩溃事件的脚本信息上传到云服务器;终端设备在从云服务器下载该脚本信息后,在发生预设崩溃事件时运行该脚本,并通过脚本将与崩溃事件有关的数据返回云服务器,以供开发者查看。在终端设备中出现新的崩溃问题时,开发者可以通过更新脚本获取与终端设备崩溃事件有关数据,获取终端设备的崩溃信息更加便捷。
图4是根据一示例性实施例示出的一种终端设备崩溃数据的获取装置400的框图,所述装置400应用于云服务器,包括:
获取模块410,用于获取开发者上传的脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
发送模块420,用于将所述脚本信息发送给所述终端设备;
接收模块430,用于接收所述终端设备运行所述脚本后返回的运行结果,所述运行结果包括所述终端设备中与所述崩溃事件相关的数据。
可选的,在图4的基础上,如图5所示,所述装置400还包括:
环境模拟模块440,用于根据所述脚本信息模拟所述脚本对应的执行环境;
模拟执行模块450,用于在所述执行环境中运行所述脚本,以对所述脚本信息进行验证;
提醒模块460,用于在验证确定所述脚本信息出现错误时,发出请求更正所述脚本信息的提示信息。
图6是根据一示例性实施例示出的一种终端设备崩溃数据的获取装置600的框图,所述装置600应用于终端设备,包括:
下载模块610,用于从云服务器下载脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
检测模块620,用于检测所述终端设备是否发生预设崩溃事件;
执行模块630,用于在所述终端设备发生所述预设崩溃事件时,运行与所述预设崩溃事件相匹配的目标脚本;
上传模块640,用于将运行所述目标脚本得到的运行结果上传至所述云服务器,所述运行结果包括所述终端设备中与所述预设崩溃事件相关的数据。
可选的,所述脚本信息还包括基础数据脚本,所述基础数据脚本在被所述目标脚本调用时,为所述目标脚本的运行提供基础数据信息;
其中,所述基础数据信息包括以下至少一种数据信息:
所述目标脚本访问的变量在内存中的位置信息;
在所述目标脚本读取成员数据时,所述成员相对于所述成员所在的结构体的偏移信息。
可选的,所述脚本信息还包括所述脚本匹配的终端设备类型;在图6的基础上如图7所示,所述下载模块610包括:
查询子模块611,用于向所述云服务器查询与所述终端设备类型相匹配的脚本;
下载子模块612,用于从所述云服务器下载与所述终端设备类型相匹配的脚本。
可选的,在图6的基础上如图8所示,所述检测模块620,包括:
信号检测子模块621,用于检测所述终端设备发生崩溃事件时产生的信号;
信号确定子模块622,用于确定所述信号是否属于预设信号类型,所述预设信号类型是基于触发所述脚本运行的终端设备崩溃事件匹配的信号类型;
第一事件确定子模块623,用于在所述信号属于所述预设信号类型,确定所述终端设备发生所述预设崩溃事件。
可选的,在图6的基础上如图8中虚线部分所示,所述检测模块620,包括:
字符串检测子模块624,用于检测与所述终端设备崩溃事件相关的数据中是否包括预设字符串,所述预设字符串是基于触发所述脚本运行的终端设备崩溃事件匹配的字符串;
第二事件确定子模块625,用于在与所述终端设备崩溃事件相关的数据中包括所述预设字符串时,确定所述终端设备发生所述预设崩溃事件。
本公开实施例还提供另一种终端设备崩溃数据的获取装置,包括:
处理器;用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:获取开发者上传的脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
将所述脚本信息发送给所述终端设备;
接收所述终端设备运行所述脚本后返回的运行结果,所述运行结果包括所述终端设备中与所述崩溃事件相关的数据。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现所述云服务器侧崩溃数据的获取方法的步骤。
本公开实施例还提供另一种终端设备崩溃数据的获取装置,所述装置应用于终端设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
从云服务器下载脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
检测所述终端设备是否发生预设崩溃事件;
若所述终端设备发生所述预设崩溃事件,则运行与所述预设崩溃事件相匹配的目标脚本;
将运行所述目标脚本得到的运行结果上传至所述云服务器,所述运行结果包括所述终端设备中与所述预设崩溃事件相关的数据。
本公开实施例还提供另一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现所述终端设备侧崩溃数据的获取方法的步骤。
图9是根据一示例性实施例示出的一种终端设备崩溃数据的获取系统900框图,所述系统900包括云服务器910和终端设备920;
所述云服务器910包括所述终端设备崩溃数据的获取装置400;
所述终端设备920包括所述终端设备崩溃数据的获取装置600。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图10是根据一示例性实施例示出的一种移动终端1000的框图。例如,终端设备1000可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图10,终端设备1000可以包括以下一个或多个组件:处理组件1002,存储器1004,电力组件1006,多媒体组件1008,音频组件1010,输入/输出(I/O)的接口1012,传感器组件1014,以及通信组件1016。
处理组件1002通常控制终端设备1000的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件1002可以包括一个或多个处理器1020来执行指令,以完成上述的终端设备崩溃数据的获取方法的全部或部分步骤。此外,处理组件1002可以包括一个或多个模块,便于处理组件1002和其他组件之间的交互。例如,处理组件1002可以包括多媒体模块,以方便多媒体组件1008和处理组件1002之间的交互。
存储器1004被配置为存储各种类型的数据以支持在终端设备1000的操作。这些数据的示例包括用于在终端设备1000上操作的任何应用程序或方法的指令,系统类型数据,接口信息数据,脚本信息等。存储器1004可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件1006为终端设备1000的各种组件提供电力。电力组件1006可以包括电源管理系统,一个或多个电源,及其他与为终端设备1000生成、管理和分配电力相关联的组件。
多媒体组件1008包括在所述终端设备1000和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件1008包括一个前置摄像头和/或后置摄像头。当终端设备1000处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件1010被配置为输出和/或输入音频信号。例如,音频组件1010包括一个麦克风(MIC),当终端设备1000处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1004或经由通信组件1016发送。在一些实施例中,音频组件1010还包括一个扬声器,用于输出音频信号。
I/O接口1012为处理组件1002和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件1014包括一个或多个传感器,用于为终端设备1000提供各个方面的状态评估。例如,传感器组件1014可以检测到终端设备1000的打开/关闭状态,组件的相对定位,例如所述组件为终端设备1000的显示器和小键盘,传感器组件1014还可以检测终端设备1000或终端设备1000一个组件的位置改变,用户与终端设备1000接触的存在或不存在,终端设备1000方位或加速/减速和终端设备1000的温度变化。传感器组件1014可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件1014还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件1014还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件1016被配置为便于终端设备1000和其他设备之间有线或无线方式的通信。终端设备1000可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件1016经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件1016还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,终端设备1000可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述终端设备崩溃数据的获取方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器1004,上述指令可由终端设备1000的处理器1020执行以完成上述终端设备崩溃数据的获取方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图11是根据一示例性实施例示出的一种云服务器1100的框图。参照图11,云服务器1100包括处理组件1122,其进一步包括一个或多个处理器,以及由存储器1132所代表的存储器资源,用于存储可由处理组件1122的执行的指令,例如应用程序。存储器1132中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1122被配置为执行指令,以执行上述终端设备崩溃数据的获取方法。
云服务器1100还可以包括一个电源组件1126被配置为执行云服务器1100的电源管理,一个有线或无线网络接口1150被配置为将云服务器1100连接到网络,和一个输入输出(I/O)接口1158。云服务器1100可以操作基于存储在存储器1132的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (11)

1.一种终端设备崩溃数据的获取方法,其特征在于,所述方法应用于终端设备,包括:
从云服务器下载脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
检测所述终端设备是否发生预设崩溃事件;
若所述终端设备发生所述预设崩溃事件,则运行与所述预设崩溃事件相匹配的目标脚本;
将运行所述目标脚本得到的运行结果上传至所述云服务器,所述运行结果包括所述终端设备中与所述预设崩溃事件相关的数据;
所述脚本信息还包括基础数据脚本,所述基础数据脚本在被所述目标脚本调用时,为所述目标脚本的运行提供基础数据信息;
其中,所述基础数据信息包括以下至少一种数据信息:
所述目标脚本访问的变量在内存中的位置信息;
在所述目标脚本读取成员数据时,所述成员相对于所述成员所在的结构体的偏移信息。
2.根据权利要求1所述的方法,其特征在于,所述脚本信息还包括所述脚本匹配的终端设备类型;
所述从云服务器下载脚本信息,包括:
向所述云服务器查询与所述终端设备类型相匹配的脚本;
从所述云服务器下载与所述终端设备类型相匹配的脚本。
3.根据权利要求1或2所述的方法,其特征在于,所述检测所述终端设备是否发生预设崩溃事件,包括:
检测所述终端设备发生崩溃事件时产生的信号;
确定所述信号是否属于预设信号类型,所述预设信号类型是基于触发所述脚本运行的终端设备崩溃事件匹配的信号类型;
若所述信号属于所述预设信号类型,则确定所述终端设备发生所述预设崩溃事件。
4.根据权利要求1或2所述的方法,其特征在于,所述检测所述终端设备是否发生预设崩溃事件,包括:
检测与所述终端设备崩溃事件相关的数据中是否包括预设字符串,所述预设字符串是基于触发所述脚本运行的终端设备崩溃事件匹配的字符串;
若与所述终端设备崩溃事件相关的数据中包括所述预设字符串,则确定所述终端设备发生所述预设崩溃事件。
5.一种终端设备崩溃数据的获取装置,其特征在于,所述装置应用于终端设备,包括:
下载模块,用于从云服务器下载脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
检测模块,用于检测所述终端设备是否发生预设崩溃事件;
执行模块,用于在所述终端设备发生所述预设崩溃事件时,运行与所述预设崩溃事件相匹配的目标脚本;
上传模块,用于将运行所述目标脚本得到的运行结果上传至所述云服务器,所述运行结果包括所述终端设备中与所述预设崩溃事件相关的数据;
所述脚本信息还包括基础数据脚本,所述基础数据脚本在被所述目标脚本调用时,为所述目标脚本的运行提供基础数据信息;
其中,所述基础数据信息包括以下至少一种数据信息:
所述目标脚本访问的变量在内存中的位置信息;
在所述目标脚本读取成员数据时,所述成员相对于所述成员所在的结构体的偏移信息。
6.根据权利要求5所述的装置,其特征在于,所述脚本信息还包括所述脚本匹配的终端设备类型;
所述下载模块包括:
查询子模块,用于向所述云服务器查询与所述终端设备类型相匹配的脚本;
下载子模块,用于从所述云服务器下载与所述终端设备类型相匹配的脚本。
7.根据权利要求5或6所述的装置,其特征在于,所述检测模块,包括:
信号检测子模块,用于检测所述终端设备发生崩溃事件时产生的信号;
信号确定子模块,用于确定所述信号是否属于预设信号类型,所述预设信号类型是基于触发所述脚本运行的终端设备崩溃事件匹配的信号类型;
第一事件确定子模块,用于在所述信号属于所述预设信号类型,确定所述终端设备发生所述预设崩溃事件。
8.根据权利要求5或6所述的装置,其特征在于,所述检测模块,包括:
字符串检测子模块,用于检测与所述终端设备崩溃事件相关的数据中是否包括预设字符串,所述预设字符串是基于触发所述脚本运行的终端设备崩溃事件匹配的字符串;
第二事件确定子模块,用于在与所述终端设备崩溃事件相关的数据中包括所述预设字符串时,确定所述终端设备发生所述预设崩溃事件。
9.一种终端设备崩溃数据的获取装置,其特征在于,所述装置应用于终端设备,包括:
处理器;用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
从云服务器下载脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
检测所述终端设备是否发生预设崩溃事件;
若所述终端设备发生所述预设崩溃事件,则运行与所述预设崩溃事件相匹配的目标脚本;
将运行所述目标脚本得到的运行结果上传至所述云服务器,所述运行结果包括所述终端设备中与所述预设崩溃事件相关的数据;
所述脚本信息还包括基础数据脚本,所述基础数据脚本在被所述目标脚本调用时,为所述目标脚本的运行提供基础数据信息;
其中,所述基础数据信息包括以下至少一种数据信息:
所述目标脚本访问的变量在内存中的位置信息;
在所述目标脚本读取成员数据时,所述成员相对于所述成员所在的结构体的偏移信息。
10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该程序指令被处理器执行时实现权利要求1-4中任一项所述方法的步骤。
11.一种终端设备崩溃数据的获取系统,其特征在于,所述系统包括云服务器和终端设备;
所述云服务器包括应用于所述云服务器的终端设备崩溃数据的获取装置;
所述终端设备包括权利要求5-8中任一项所述终端设备崩溃数据的获取装置;
其中,所述应用于所述云服务器的终端设备崩溃数据的获取装置包括:
获取模块,用于获取开发者上传的脚本信息,所述脚本信息包括一个或多个脚本,以及触发所述脚本运行的终端设备崩溃事件;
环境模拟模块,用于根据所述脚本信息模拟所述脚本对应的执行环境;
模拟执行模块,用于在所述执行环境中运行所述脚本,以对所述脚本信息进行验证;
提醒模块,用于在验证确定所述脚本信息出现错误时,发出请求更正所述脚本信息的提示信息;
发送模块,用于将所述脚本信息发送给所述终端设备;
接收模块,用于接收所述终端设备运行所述脚本后返回的运行结果,所述运行结果包括所述终端设备中与所述崩溃事件相关的数据。
CN201711227570.4A 2017-11-29 2017-11-29 终端设备崩溃数据的获取方法、装置和系统 Active CN107943703B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711227570.4A CN107943703B (zh) 2017-11-29 2017-11-29 终端设备崩溃数据的获取方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711227570.4A CN107943703B (zh) 2017-11-29 2017-11-29 终端设备崩溃数据的获取方法、装置和系统

Publications (2)

Publication Number Publication Date
CN107943703A CN107943703A (zh) 2018-04-20
CN107943703B true CN107943703B (zh) 2021-03-30

Family

ID=61947720

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711227570.4A Active CN107943703B (zh) 2017-11-29 2017-11-29 终端设备崩溃数据的获取方法、装置和系统

Country Status (1)

Country Link
CN (1) CN107943703B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005266954A (ja) * 2004-03-16 2005-09-29 Hitachi Software Eng Co Ltd 操作情報記録・再生装置
CN103399803A (zh) * 2013-07-29 2013-11-20 北京小米科技有限责任公司 浏览器崩溃信息的收集方法、装置及终端设备
CN107391357A (zh) * 2017-08-17 2017-11-24 杭州师范大学 应用崩溃重现方法、装置及移动终端

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005266954A (ja) * 2004-03-16 2005-09-29 Hitachi Software Eng Co Ltd 操作情報記録・再生装置
CN103399803A (zh) * 2013-07-29 2013-11-20 北京小米科技有限责任公司 浏览器崩溃信息的收集方法、装置及终端设备
CN107391357A (zh) * 2017-08-17 2017-11-24 杭州师范大学 应用崩溃重现方法、装置及移动终端

Also Published As

Publication number Publication date
CN107943703A (zh) 2018-04-20

Similar Documents

Publication Publication Date Title
CN107329742B (zh) 软件开发工具包调用方法及装置
CN104536891B (zh) 系统测试方法及装置
CN108008955B (zh) 显示自定义控件信息的方法、装置
CN107423218B (zh) 应用测试方法、装置及终端
CN109344051B (zh) 数据处理的方法、装置、电子设备及存储介质
CN111221559A (zh) 应用更新方法、装置、存储介质、终端及服务器
CN113157256B (zh) 接口代码的生成方法、装置、电子设备、存储介质及产品
CN107562500B (zh) 调试装置、方法及设备
CN110795354A (zh) 信息处理方法、装置及存储介质
CN111782508B (zh) 自动测试方法、装置、电子设备和存储介质
CN106293683B (zh) 一种项目的编译方法及装置
CN107943703B (zh) 终端设备崩溃数据的获取方法、装置和系统
CN111338961A (zh) 应用调试方法及装置、电子设备及存储介质
CN115408277B (zh) 一种接口测试方法及装置
CN112631695B (zh) 一种数据校验方法、装置、电子设备及存储介质
CN110162245B (zh) 图形操作的分析方法、装置、电子设备及存储介质
CN106533841A (zh) 用户识别模块卡的协议一致性测试方法、装置及系统
CN109933357B (zh) 应用程序升级方法及装置
CN111831292A (zh) 生成安装包的方法、装置、存储介质和电子设备
CN107526683B (zh) 应用程序功能冗余度的检测方法、装置及存储介质
CN111597106A (zh) 一种埋点管理方法及装置
CN106844074A (zh) 更新应用程序的方法和装置
CN111290944A (zh) 脚本生成方法、装置及存储介质
CN110162966B (zh) 数据处理方法、装置、电子设备及存储介质
CN113377370B (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
GR01 Patent grant
GR01 Patent grant