一种系统日志输出方法、装置及终端设备的制作方法

文档序号:6524721阅读:245来源:国知局
一种系统日志输出方法、装置及终端设备的制作方法
【专利摘要】本发明实施例公开了一种系统日志输出方法、装置及终端设备,当终端设备处于调试状态时,所述系统日志输出方法,首先通过待修改调试变量对应的系统进程获取调试变量修改命令,并修改调试变量的变量值,输出修改的调试变量对应的系统日志,此种日志输出方法通过命令行修改调试变量的变量值,能够批量修改某个系统进程中的多个调试变量的变量值,或者多个系统进程中的多个调试变量的变量值。与通过调试工具修改调试变量输出日志的方式相比,无需将调试工具挂接到系统进程上,因此采用命令行修改调试变量输出日志的方法操作简单、需要时间少、效率高。
【专利说明】一种系统日志输出方法、装置及终端设备
【技术领域】
[0001]本公开涉及安卓系统调试【技术领域】,特别是涉及一种系统日志输出方法、装置及终端设备。
【背景技术】
[0002]在产品开发过程中,系统开发人员编写完系统程序后或操作系统产生异常错误时,需要对程序进行调试测试,从而发现程序中的语法错误和逻辑错误等;或者,在产品发行后,产品在实际使用过程中出现问题时,仍需要系统开发人员对系统(如Android系统)中的程序进行调试,从而定位问题所在。
[0003]但是,很多情况下发生异常错误的场景很难进行还原,例如,当手机处于某一地理位置时,GPS获取的地理位置信息会导致定位错误。技术人员在进行调试时,就需要获取该场景下的日志文件。或者,某一应用程序在被点击1000次后就会发生崩溃现象。而在这些场景的重演是很困难或需要耗费大量劳动的,同时导致日志的获取是很困难的。
【发明内容】

[0004]本公开实施例中提供了一种系统日志输出方法、装置及终端设备,以解决Android系统的日志文件输出操作繁琐、效率低的问题。
[0005]为了解决上述技术问题,本公开实施例公开了如下技术方案:
[0006]第一方面,本公开提供一种系统日志输出方法,应用于处于调试状态的终端设备,所述方法包括:待修改调试变量对应的系统进程获取调试变量修改命令,所述调试变量修改命令至少携带待修改调试变量对应的类名和变量名;所述系统进程根据所述类名及所述变量名修改所述待修改调试变量的变量值;所述系统进程输出所述待修改调试变量对应的系统日志。
[0007]结合第一方面,在第一方面的第一种可能的实现方式中,所述终端设备通过调试工具与主机通信,所述调试工具包括运行在所述终端设备后台的命令行守护进程,以及运行在所述主机上的命令行服务进程;
[0008]所述待修改调试变量对应的系统进程获取调试变量修改命令,采用如下方式:所述待修改调试变量对应的系统进程接收所述命令行守护进程转发的调试变量修改命令;所述调试变量修改命令还携带待修改调试变量对应系统进程的进程ID号,以及,所述调试变量修改命令由所述命令行服务进程发送至所述命令行守护进程,并由所述命令行守护进程根据所述进程ID号转发至所述待修改调试变量对应的系统进程。
[0009]结合第一方面,在第一方面的第二种可能的实现方式中,所述终端设备通过调试工具与主机通信,所述调试工具包括运行在所述终端设备后台的命令行守护进程,以及运行在所述主机上的命令行服务进程;
[0010]所述待修改调试变量对应的系统进程获取调试变量修改命令,采用如下方式:所述待修改调试变量对应的系统进程接收所述命令行守护进程转发的调试变量修改命令;所述调试变量修改命令还携带所述系统进程的进程ID号,以及,所述调试变量修改命令由所述命令行服务进程发送至所述命令行守护进程,并当所述命令行守护进程根据所述待修改调试变量对应的类名及变量名,确定所述待修改调试变量允许被修改时,根据所述进程ID号转发至所述待修改调试变量对应的系统进程。
[0011]结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,还包括:终端设备内的各个系统进程获取对应可修改调试变量的类名及变量名;当终端设备启动时,所述各个系统进程将所述可修改调试变量的类名及变量名发送至所述命令行守护进程保存,以使所述命令行守护进程获得终端设备的全部可修改调试变量的类名及变量名。
[0012]第二方面,本公开还提供一种系统日志输出方法,应用于处于调试状态的终端设备,所述终端设备通过调试工具与主机通信,所述调试工具包括运行在所述终端设备后台的命令行守护进程,以及运行在所述主机上的命令行服务进程;所述方法包括:
[0013]所述命令行守护进程接收主机通过命令行服务进程发送的调试变量修改命令,所述调试变量修改命令携带待修改调试变量对应的类名和变量名,以及待修改调试变量对应的系统进程的进程ID号;所述命令行守护进程根据所述进程ID号,将所述调试变量修改命令发送至所述待修改调试变量对应的系统进程,以使所述系统进程根据所述类名及变量名修改所述待修改调试变量。
[0014]结合第二方面,在第二方面的第一种可能的实现方式中,还包括:所述命令行守护进程获取所述终端设备系统内全部可修改调试变量的类名及变量名;所述命令行守护进程根据所述可修改调试变量的类名及变量名,判断所述待修改调试变量是否允许被修改;当所述待修改调试变量允许被修改时,执行所述命令行守护进程根据所述进程ID号将所述调试变量修改命令发送至待修改调试变量对应的系统进程的步骤。
[0015]结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,判断所述待修改调试变量是否允许被修改,采用如下方式:所述命令行守护进程判断所述待修改的调试变量对应的类名和变量名与可修改调试变量的类名和变量名一一比较,如果所述可修改调试变量对应的类名和变量名中包含所述待修改的调试变量对应的类名和变量名,则确定所述待修改的调试变量允许被修改。
[0016]第三方面,本公开还提供一种系统日志输出装置,应用于处于调试状态的终端设备,所述装置包括:第一获取单元,用于获取调试变量修改命令,所述调试变量修改命令至少携带待修改调试变量对应的类名和变量名;调试变量修改单元,用于根据所述类名及变量名修改所述待修改调试变量的变量值;日志输出单元,用于输出所述待修改调试变量对应的系统日志。
[0017]结合第三方面,在第三方面的第一种可能的实现方式中,所述终端设备通过调试工具与主机通信,所述调试工具包括运行在所述终端设备后台的命令行守护进程,以及运行在所述主机上的命令行服务进程;所述装置还包括:第二获取单元,用于获取终端设备内各个系统进程对应的可修改调试变量的类名及变量名;发送单元,用于当所述终端设备启动时,将所述可修改调试变量的类名及变量名发送至所述命令行守护进程保存,以使所述命令行守护进程获得终端设备的全部可修改调试变量的类名及变量名。
[0018]第四方面,本公开还提供一种系统日志输出装置,终端设备通过调试工具连接主机,所述调试工具包括运行在所述终端设备后台的命令行守护进程,以及运行在所述主机上的命令行服务进程;所述装置包括:第一接收单元,用于接收主机通过命令行服务进程发送的调试变量修改命令,所述调试变量修改命令携带待修改调试变量对应的类名和变量名,以及待修改调试变量对应的系统进程的进程ID号;解析单元,用于解析所述调试变量修改命令得到所述进程ID号;发送单元,用于根据所述进程ID号将所述调试变量修改命令发送至所述待修改调试变量对应的系统进程,以使所述系统进程根据所述类名及变量名修改所述待修改调试变量。
[0019]结合第四方面,在第四方面的第一种可能的实现方式中,还包括:第三获取单元,用于获取所述终端设备系统内全部可修改调试变量的类名及变量名;判断单元,用于根据所述可修改调试变量的类名及变量名,判断所述待修改调试变量是否允许被修改,当所述待修改调试变量允许被修改时,使所述发送单元将所述调试变量修改命令发送至所述待修改调试变量对应的系统进程。
[0020]结合第四方面的第一种可能的实现方式,在第四方面的第二种可能的实现方式中,所述判断单元包括:比较子单元,用于使命令行守护进程将待修改调试变量的类名及变量名与可修改调试变量的类名和变量名一一比较,如果所述可修改调试变量对应的类名和变量名中包含所述待修改的调试变量对应的类名和变量名,则确定所述待修改的调试变量允许被修改。
[0021]第五方面,本公开还提供一种终端设备,包括:存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上指令包含用于进行以下操作的指令:待修改调试变量对应的系统进程获取调试变量修改命令,所述调试变量修改命令至少携带待修改调试变量对应的类名和变量名;所述系统进程根据所述类名及所述变量名修改所述待修改调试变量的变量值;所述系统进程输出所述待修改调试变量对应的系统日志。
[0022]本公开的有益效果包括:当终端设备处于调试状态时,待修改调试变量对应的系统进程获取调试变量修改命令,并修改调试变量的变量值,输出修改的调试变量对应的系统日志文件,此种日志输出方法通过命令行修改调试变量的变量值,能够批量修改某个系统进程中的多个调试变量的变量值,或者多个系统进程中的多个调试变量的变量值。与通过调试工具修改调试变量输出日志的方式相比,无需将调试工具挂接到系统进程上,因此采用命令行修改调试变量输出日志的方法操作简单、需要时间少、效率高。
[0023]应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。【专利附图】

【附图说明】
[0024]为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0025]图1为本公开实施例一种系统日志输出方法的流程示意图;
[0026]图2为本公开实施例另一种系统日志输出方法的流程示意图;
[0027]图3为本公开实施例又一种系统日志输出方法的流程示意图;
[0028]图4为本公开实施例再一种系统日志输出方法的流程示意图;
[0029]图5为本公开实施例另一种系统日志输出方法的流程示意图;
[0030]图6为本公开实施例一种系统日志输出装置的结构不意图;
[0031]图7为本公开实施例另一种系统日志输出装置的结构示意;[0032]图8为本公开实施例一种终端设备的结构示意图。
【具体实施方式】
[0033]为了使本【技术领域】的人员更好地理解本公开中的技术方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
[0034]在详细介绍本公开的具体实施例之前,首先介绍下对终端设备的调试过程,正如【背景技术】中介绍,当终端设备运行出现异常情况或者,产品开发的调试阶段,都需要获取该场景下的系统日志文件,通过分析系统日志文件确定出问题点。系统日志文件的获取通过修改系统进程中的相应的调试变量实现,通常将调试工具(如,Eclipse)挂接到终端设备运行的系统进程上,当所述系统进程挂起后,且运行到调试变量的作用范围内时,才能通过调试工具修改调试变量,从而获得所述调试变量对应的系统日志。由上述修改调试变量的过程可知,修改多个系统进程的多个调试变量时,操作很繁琐、时间长。
[0035]本公开提供的系统日志输出方法,首先通过调试工具建立终端设备与主机之间的通信通道,所述调试工具包括运行在终端设备后台的命令行守护进程,以及运行在主机上的命令行服务进程,调试人员通过主机输入调试命令,命令行服务进程将所述调试命令发送至命令行守护进程,再由命令行守护进程将调试命令发送至终端设备的系统进程,最终由系统进程执行所述调试命令,动态修改调试变量,动态输出系统日志。
[0036]例如,调试工具为ADB (Android Debug Bridge)工具,ADB工具用于跟踪连接到Host主机上的Android设备或模拟器,实现各种控制命令,如adb shell命令,adb pull命令等。其中,命令行守护进程为ADBD(ADB Daemon),负责连接终端设备(Android设备或模拟器)和命令行服务进程(ADB server).ADBD server用于管理连接在Host主机上的终端设备,而且,在ADB server中保存已连接终纟而设备的列表,负责中转ADBClient和终纟而设备之间的数据或命令。所述ADB Client运行在主机上,其作用是从命令行或脚本运行adb命令。
[0037]请参见图1,示出了本公开实施例提供的一种系统日志输出方法的流程示意图,如图1所示,所述方法可以包括以下步骤:
[0038]S110,待修改调试变量对应的系统进程获取调试变量修改命令;所述调试变量修改命令至少携带待修改调试变量对应的类名和变量名。本实施例的所述方法应用于终端设备的系统进程。
[0039]例如,获取Android系统的系统日志时,调试变量修改命令为“adbsetdebug4ffindow Manager Service.DEBUG_LAY0UT,,,其中,“adb setdebug,,是命令符,“4,,表示进程ID号,“Window Manager Service”是调试变量所属类的类名,“DEBUG_LAY0UT”是
调试开关的变量名。
[0040]在本公开的一个实施例中,所述调试变量修改命令由调试人员在主机上输入,而且,调试变量修改命令还携带待修改调试变量对应的进程ID号;所述调试变量修改命令由主机上的命令行服务进程发送到运行在终端设备上的命令行守护进程,命令行守护进程将接收到的调试变量修改命令发送给所述进程ID号对应的系统进程,即待修改调试变量对应的终端设备内系统进程。
[0041]S120,所述系统进程根据所述类名及所述变量名修改所述待修改调试变量的变量值。接收到调试变量修改命令的系统进程根据修改调试变量修改命令所携带的类名及变量名确定待修改调试变量,并修改所述待修改调试变量的变量值。所述系统进程通过调用调试变量修改程序修改所述待修改调试变量的变量值。
[0042]S130,所述系统进程输出所述待修改调试变量对应的系统日志。修改所述待修改调试变量后,所述系统进程即输出待修改调试变量对应的系统日志。
[0043]本实施例提供的系统日志输出方法,由待修改调试变量对应的系统进程根据命令行动态修改待修改调试变量,从而实现动态输出所述待修改调试变量对应的系统日志。修改调试变量的时机更灵活、效率高,接收到调试变量修改命令后即可修改对应的调试变量。无需等到系统进程挂起,且当系统进程运行到所述待修改调试变量的作用范围内时,再利用调试工具来修改调试变量。本实施例的所述方法修改调试变量的操作简单,而且能够批量修改某个系统进程中的多个调试变量的变量值,或者,多个系统进程中的多个调试变量的变量值。
[0044]考虑到修改调试变量对终端设备的系统进程安全运行的影响,某些调试变量不允许被修改。请参见图2,示出了本公开实施例另一种系统日志输出方法的流程示意图,所述方法包括以下步骤:
[0045]S210,终端设备内的各个系统进程获取对应可修改调试变量的类名及变量名。本实施例的所述方法应用于被调试的终端设备中系统进程。
[0046]终端设备的 各个系统进程获取自身进程中允许修改的调试变量的类名及变量名。调试人员考虑系统运行安全性,确定每个系统进程中所允许修改的调试变量的类名及变量名,并提供给允许动态修改调试变量的每个系统进程。例如,可以采用以下形式向系统进程提供可修改的调试变量的类名及变量名:
[0047]
【权利要求】
1.一种系统日志输出方法,应用于处于调试状态的终端设备,其特征在于,所述方法包括: 待修改调试变量对应的系统进程获取调试变量修改命令,所述调试变量修改命令至少携带待修改调试变量对应的类名和变量名; 所述系统进程根据所述类名及所述变量名修改所述待修改调试变量的变量值; 所述系统进程输出所述待修改调试变量对应的系统日志。
2.根据权利要求1所述的方法,其特征在于,所述终端设备通过调试工具与主机通信,所述调试工具包括运行在所述终端设备后台的命令行守护进程,以及运行在所述主机上的命令行服务进程; 所述待修改调试变量对应的系统进程获取调试变量修改命令,采用如下方式: 所述待修改调试变量对应的系统进程接收所述命令行守护进程转发的调试变量修改命令;所述调试变量修改命令还携带待修改调试变量对应系统进程的进程ID号,以及,所述调试变量修改命令由所述命令行服务进程发送至所述命令行守护进程,并由所述命令行守护进程根据所述进程ID号转发至所述待修改调试变量对应的系统进程。
3.根据权利要求1所述的方法,其特征在于,所述终端设备通过调试工具与主机通信,所述调试工具包括运行在所述终端设备后台的命令行守护进程,以及运行在所述主机上的命令行服务进程; 所述待修改调试变量对应的系统进程获取调试变量修改命令,采用如下方式: 所述待修改调试变量对应的系统进程接收所述命令行守护进程转发的调试变量修改命令;所述调试变量修改命令还携带所述系统进程的进程ID号,以及,所述调试变量修改命令由所述命令行服务进程发送`至所述命令行守护进程,当所述命令行守护进程根据所述待修改调试变量对应的类名及变量名,确定所述待修改调试变量允许被修改时,根据所述进程ID号转发至所述待修改调试变量对应的系统进程。
4.根据权利要求3所述的方法,其特征在于,还包括: 终端设备内的各个系统进程获取对应可修改调试变量的类名及变量名; 当所述终端设备启动时,所述各个系统进程将所述可修改调试变量的类名及变量名发送至所述命令行守护进程保存,以使所述命令行守护进程获得终端设备的全部可修改调试变量的类名及变量名。
5.一种系统日志输出方法,其特征在于,应用于处于调试状态的终端设备,所述终端设备通过调试工具与主机通信,所述调试工具包括运行在所述终端设备后台的命令行守护进程,以及运行在所述主机上的命令行服务进程;所述方法包括: 所述命令行守护进程接收主机通过命令行服务进程发送的调试变量修改命令,所述调试变量修改命令携带待修改调试变量对应的类名和变量名,以及待修改调试变量对应的系统进程的进程ID号; 所述命令行守护进程根据所述进程ID号,将所述调试变量修改命令发送至所述待修改调试变量对应的系统进程,以使所述系统进程根据所述类名及变量名修改所述待修改调试变量。
6.根据权利要求5所述的方法,其特征在于,还包括: 所述命令行守护进程获取所述终端设备系统内全部可修改调试变量的类名及变量名; 所述命令行守护进程根据所述可修改调试变量的类名及变量名,判断所述待修改调试变量是否允许被修改; 当所述待修改调试变量允许被修改时,执行所述命令行守护进程根据所述进程ID号将所述调试变量修改命令发送至待修改调试变量对应的系统进程的步骤。
7.根据权利要求6所述的方法,其特征在于,判断所述待修改调试变量是否允许被修改,采用如下方式: 所述命令行守护进程判断所述待修改的调试变量对应的类名和变量名与可修改调试变量的类名和变量名一一比较,如果所述可修改调试变量对应的类名和变量名中包含所述待修改的调试变量对应的类名和变量名,则确定所述待修改的调试变量允许被修改。
8.一种系统日志输出装置,应用于处于调试状态的终端设备,其特征在于,所述装置包括: 第一获取单元,用于获取调试变量修改命令,所述调试变量修改命令至少携带待修改调试变量对应的类名和变量名; 调试变量修改单元,用于根据所述类名及变量名修改所述待修改调试变量的变量值; 日志输出单元,用于输出所述待修改调试变量对应的系统日志。
9.根据权利要求8所述的装置,其特征在于,所述终端设备通过调试工具与主机通信,所述调试工具包括运行在所述终端设备后台的命令行守护进程,以及运行在所述主机上的命令行服务进程;所述装置还包括: 第二获取单元,用于获取终端设备内各个系统进程对应的可修改调试变量的类名及变量名; 发送单元,用于当所述终端设备启动时,将所述可修改调试变量的类名及变量名发送至所述命令行守护进程保存,以使所述命令行守护进程获得终端设备的全部可修改调试变量的类名及变量名。
10.一种系统日志输出装置,其特征在于,终端设备通过调试工具连接主机,所述调试工具包括运行在所述终端设备后台的命令行守护进程,以及运行在所述主机上的命令行服务进程;所述装置包括: 第一接收单元,用于接收主机通过命令行服务进程发送的调试变量修改命令,所述调试变量修改命令携带待修改调试变量对应的类名和变量名,以及待修改调试变量对应的系统进程的进程ID号; 解析单元,用于解析所述调试变量修改命令得到所述进程ID号; 发送单元,用于根据所述进程ID号将所述调试变量修改命令发送至所述待修改调试变量对应的系统进程,以使所述系统进程根据所述类名及变量名修改所述待修改调试变量。
11.根据权利要求10所述的装置,其特征在于,还包括: 第三获取单元,用于获取所述终端设备系统内全部可修改调试变量的类名及变量名; 判断单元,用于根据所述可修改调试变量的类名及变量名,判断所述待修改调试变量是否允许被修改,当所述待修改调试变量允许被修改时,使所述发送单元将所述调试变量修改命令发送至所述待修改调试变量对应的系统进程。
12.根据权利要求11所述的装置,其特征在于,所述判断单元包括: 比较子单元,用于使命令行守护进程将待修改调试变量对应的类名及变量名与可修改调试变量的类名和变量名一一比较,如果所述可修改调试变量的类名和变量名中包含所述待修改的调试变量对应的类名和变量名,则确定所述待修改的调试变量允许被修改。
13.—种终端设备,其特征在于,包括:存储器,以及一个或者一个以上的指令,其中一个或者一个以上指令存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上指令包含用于进行以下操作的指令: 待修改调试变量对应的系统进程获取调试变量修改命令,所述调试变量修改命令至少携带待修改调试变量对应的类名和变量名; 所述系统进程根据所述类名及所述变量名修改所述待修改调试变量的变量值; 所述系统进程输出所述待 修改调试变量对应的系统日志。
【文档编号】G06F11/34GK103729283SQ201310710794
【公开日】2014年4月16日 申请日期:2013年12月20日 优先权日:2013年12月20日
【发明者】梁金祥, 袁军, 闫昊, 李明浩 申请人:小米科技有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1