一种抓取ANDROID设备调试信息的方法和装置.pdf

上传人:v**** 文档编号:6105308 上传时间:2019-04-12 格式:PDF 页数:10 大小:621.73KB
返回 下载 相关 举报
摘要
申请专利号:

CN201610947296.7

申请日:

2016.10.26

公开号:

CN106569948A

公开日:

2017.04.19

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 11/36申请日:20161026|||公开

IPC分类号:

G06F11/36

主分类号:

G06F11/36

申请人:

北京小鸟看看科技有限公司

发明人:

张瑞生

地址:

100083 北京市海淀区学院路35号世宁大厦2101层

优先权:

专利代理机构:

北京市隆安律师事务所 11323

代理人:

权鲜枝;吴昊

PDF下载: PDF下载
内容摘要

本发明公开了一种抓取Android设备调试信息的方法和装置,该装置设置在Android设备中,包括启动单元、应用调试信息获取单元、驱动调试信息获取单元;启动单元用于在Android设备启动时,启动应用调试信息获取单元和驱动调试信息获取单元;应用调试信息获取单元和驱动调试信息获取单元分别抓取Android设备在运行过程中产生的应用调试信息和驱动调试信息,并存储到Android设备自身的存储设备中。Android设备运行过程中产生的调试信息会被记录到自身的存储设备中,有助于快速有效地定位问题、解决问题,解决了现有的抓取调试信息的方案需要对调试的问题进行复现,因而难以有效地抓取调试信息的问题。

权利要求书

1.一种抓取Android设备调试信息的装置,其特征在于,所述装置设置在所述Android
设备中,包括:启动单元、应用调试信息获取单元、驱动调试信息获取单元;
所述启动单元,用于在所述Android设备启动时,启动所述应用调试信息获取单元和所
述驱动调试信息获取单元;
所述应用调试信息获取单元,用于抓取所述Android设备在运行过程中产生的应用调
试信息,并存储到所述Android设备自身的存储设备中;
所述驱动调试信息获取单元,用于抓取所述Android设备在运行过程中产生的驱动调
试信息,并存储到所述Android设备自身的存储设备中。
2.如权利要求1所述的装置,其特征在于,所述启动单元具体用于,
在Android系统的init.rc文件中新建一个服务或利用init.rc文件中某一个已有的服
务,并将所述应用调试信息获取单元和所述驱动调试信息获取单元配置到所述服务;
在init.rc文件中为所述服务添加一个以persist为前缀的属性;
在Android系统的属性配置文件中设定所述属性的值,使所述属性为开启状态。
3.如权利要求2所述的装置,其特征在于,所述应用调试信息获取单元具体用于,
执行一次logcat命令,将缓冲区中产生的应用调试信息实时写入所述Android设备自
身的存储设备中的第一文本文件中,并保存该文件;
若当前写入的位置没有超出对第一文本文件大小的限制值,则在当前位置写入应用调
试信息;若当前写入的位置超出了所述限定值,则返回第一文本文件开头写入应用调试信
息。
4.如权利要求2所述的装置,其特征在于,所述驱动调试信息获取单元具体用于,
按照预设的时间间隔,循环调用klogctl函数,将内核缓冲区中产生的驱动调试信息写
入所述Android设备自身的存储设备中的第二文本文件中,删除所述内核缓冲区中已被读
出的驱动调试信息,并保存该文件;
若当前写入的位置没有超出对第二文本文件大小的限制值,则在当前位置写入应用调
试信息;若当前写入的位置超出了所述限制值,则返回第二文本文件开头写入应用调试信
息。
5.如权利要求3或4所述的装置,其特征在于,所述Android设备自身的存储设备为闪存
芯片或SD卡。
6.一种抓取Android设备调试信息的方法,其特征在于,包括:
预先在所述Android设备中设置一个抓取Android设备调试信息的装置,在所述
Android设备启动时,启动所述装置;
从所述Android设备启动时开始,利用所述装置抓取所述Android设备在运行过程中产
生的应用调试信息,并存储到所述Android设备自身的存储设备中;
从所述Android设备启动时开始,利用所述装置抓取所述Android设备在运行过程中产
生的驱动调试信息,并存储到所述Android设备自身的存储设备中。
7.如权利要求6所述的方法,其特征在于,所述在所述Android设备启动时,启动所述装
置,具体包括:
在Android系统的init.rc文件中新建一个服务或利用init.rc文件中某一个已有的服
务,并将所述装置配置到所述服务;
在init.rc文件中为所述服务添加一个以persist为前缀的属性;
在Android系统的属性配置文件中设定所述属性的值,使所述属性为开启状态。
8.如权利要求7所述的方法,其特征在于,所述利用所述装置抓取所述Android设备在
运行过程中产生的应用调试信息,并存储到所述Android设备自身的存储设备中,具体包
括:
执行一次logcat命令,将缓冲区中产生的应用调试信息实时写入所述Android设备自
身的存储设备中的第一文本文件,并保存该文件;
若当前写入的位置没有超出对第一文本文件大小的限制值,则在当前位置写入应用调
试信息;若当前写入的位置超出了所述限定值,则返回第一文本文件开头写入应用调试信
息。
9.如权利要求7所述的方法,其特征在于,所述利用所述装置抓取所述Android设备在
运行过程中产生的驱动调试信息,并存储到所述Android设备自身的存储设备中,具体包
括:
按照预设的时间间隔,循环调用klogctl函数,将内核缓冲区中产生的驱动调试信息写
入所述Android设备自身的存储设备中的第二文本文件,删除所述内核缓冲区中已被读出
的驱动调试信息,并保存该文件;
若当前写入的位置没有超出对第二文本文件大小的限制值,则在当前位置写入应用调
试信息;若当前写入的位置超出了所述限制值,则返回第二文本文件开头写入应用调试信
息。
10.如权利要求8或9所述装置,其特征在于,所述Android设备自身的存储设备为闪存
芯片或SD卡。

说明书

一种抓取Android设备调试信息的方法和装置

技术领域

本发明涉及计算机技术领域,具体涉及一种抓取Android设备调试信息的方法和
装置。

背景技术

Android系统是一种基于Linux的自由及开放源代码的操作系统,广泛应用于移动
设备,如智能手机和平板电脑等。运行在Android系统上的软件或硬件有可能会出现各种问
题并产生相应的调试信息,如一些必须立即处理的错误、严重的错误、可能导致错误的警
告、或某些报告信息等,在问题出现之后就需要获取相关的调试信息进行调试以解决这些
问题。

目前,Android系统提供的抓取调试信息的方法为实时打印,即将Android设备连
接PC机等设备后输入调试命令,实时将调试信息打印到PC机上。想要获取与某一问题相关
的调试信息必须保证在该问题出现之前,已经将Android设备连接到PC机并手动输入命令。

在实际场景中,通常是出现了某一问题之后才有了获取调试信息的需求。利用现
有的抓取调试信息的方案,在某一问题出现之后想要抓取与该问题相关的调试信息,需要
先将Android设备连接到PC机并手动输入命令,之后复现该问题。但是问题出现的时间不
定,复现该问题的步骤也不定,很多时候想要复现该问题是很困难的,因此难以有效地抓取
调试信息。

发明内容

本发明提供了一种抓取Android设备调试信息的方法和装置,以解决目前难以有
效地抓取调试信息的问题。

根据本发明的一个方面,本发明提供了一种抓取Android设备调试信息的装置,所
述装置设置在所述Android设备中,包括:启动单元、应用调试信息获取单元、驱动调试信息
获取单元;

所述启动单元,用于在所述Android设备启动时,启动所述应用调试信息获取单元
和所述驱动调试信息获取单元;

所述应用调试信息获取单元,用于抓取所述Android设备在运行过程中产生的应
用调试信息,并存储到所述Android设备自身的存储设备中;

所述驱动调试信息获取单元,用于抓取所述Android设备在运行过程中产生的驱
动调试信息,并存储到所述Android设备自身的存储设备中。

根据本发明的另一个方面,本发明提供了一种抓取Android设备调试信息的方法,
包括:

预先在所述Android设备中设置一个抓取Android设备调试信息的装置,在所述
Android设备启动时,启动所述装置;

从所述Android设备启动时开始,利用所述装置抓取所述Android设备在运行过程
中产生的应用调试信息,并存储到所述Android设备自身的存储设备中;

从所述Android设备启动时开始,利用所述装置抓取所述Android设备在运行过程
中产生的驱动调试信息,并存储到所述Android设备自身的存储设备中。

本发明的有益效果是:本发明实施例提供的抓取Android设备调试信息的装置设
置在Android设备中,在Android设备启动时启动单元启动应用调试信息获取单元和驱动调
试信息获取单元,应用调试信息获取单元和驱动调试信息获取单元分别抓取Android设备
在运行过程中产生的应用调试信息和驱动调试信息,并存储到Android设备自身的存储设
备中。Android设备在整个运行过程中一旦出现任何问题,相关的调试信息都会被记录到自
身的存储设备中,研发人员不再需要将Android设备连接到PC机并手动输入命令,之后再复
现该问题,只需要到Android设备自身的存储设备中的文件中查询相关的调试信息即可,有
助于快速有效地定位问题、解决问题。

附图说明

图1是本发明一个实施例提供的一种抓取Android设备调试信息的装置的功能框
图;

图2是本发明一个实施例提供的一种抓取Android设备调试信息的方法的流程图。

具体实施方式

本发明的设计构思是:利用现有的抓取调试信息的方案,在某一问题出现之后想
要抓取与该问题相关的调试信息,需要先将Android设备连接到PC机并手动输入命令,之后
复现该问题,由于复现问题比较困难,因而难以有效地抓取调试信息。针对这种情况,本发
明在Android设备中设置抓取调试信息的装置,并控制该装置随设备的启动而启动,该装置
可以分别获取Android设备的应用调试信息和驱动调试信息并存储到Android设备自身的
存储设备中。这样,Android设备在整个运行过程中一旦出现任何问题,相关的调试信息都
会被记录到自身的存储设备中,研发人员不再需要将Android设备连接到PC机并手动输入
命令,之后再复现该问题,只需要到Android设备自身的存储设备中的文件中查询相关的调
试信息即可,有助于快速有效地定位问题、解决问题。

实施例一

图1是本发明一个实施例提供的一种抓取Android设备调试信息的装置的功能框
图,如图1所示,本实施例提供的抓取Android设备调试信息的装置包括:启动单元110、应用
调试信息获取单元120、驱动调试信息获取单元130。

在Android设备启动时,启动单元110启动应用调试信息获取单元120和驱动调试
信息获取单元130,应用调试信息获取单元120抓取Android设备在运行过程中产生的应用
调试信息,并存储到Android设备自身的存储设备中;同时,驱动调试信息获取单元130抓取
Android设备在运行过程中产生的驱动调试信息,并存储到Android设备自身的存储设备
中。Android设备自身的存储设备可以是闪存芯片或SD卡。

Android系统采用分层的架构,主要分为四个层,从高层到低层分别是:应用程序
层、应用程序框架层、系统运行库层和Linux内核层。Android系统中设置有多个缓冲区,用
于存储各层产生的调试信息。通常,对于应用调试信息和驱动调试信息,二者存放在不同的
缓冲区中,并且系统提供的查看缓冲区中信息的接口也是不同的。因此本实施例分别通过
应用调试信息获取单元120抓取应用调试信息、通过驱动调试信息获取单元130抓取驱动调
试信息,应用调试信息获取单元120和驱动调试信息获取单元130彼此独立工作。

Android系统中用于存储调试信息的缓冲区为环形缓冲区,即当调试信息超出缓
冲区的大小时,最先存入缓冲区的调试信息会被新的调试信息覆盖,缓冲区中存储的调试
信息的数目是有限的。Android设备在启动时就会开始产生各种调试信息,为了防止设备启
动时产生的调试信息因被覆盖而无法被抓取到,本实施例通过启动单元110控制应用调试
信息获取单元120和驱动调试信息获取单元130随着Android设备启动而启动,使应用调试
信息获取单元120和驱动调试信息获取单元130在Android设备启动时就可以开始抓取调试
信息。

优选地,本实施例中启动单元110通过以下步骤控制应用调试信息获取单元120和
驱动调试信息获取单元130随着Android设备启动而启动:

启动单元110在Android系统的init.rc文件中新建一个服务(Service)或利用
init.rc文件中某一个已有的服务,将应用调试信息获取单元120和驱动调试信息获取单元
130配置到该服务。

init.rc文件是一个可配置的初始化文件,通过init.rc文件可以配置额外的初始
化配置,init.rc文件主要是由许多的Action和Service组成,其中的Service是一些由init
进程启动的程序,启动单元110将应用调试信息获取单元120和驱动调试信息获取单元130
配置到一个Service,即可实现在Android设备启动时,由系统的init进程通过该Service启
动应用调试信息获取单元120和驱动调试信息获取单元130。

Android系统根目录下存储的init.rc文件是只读的,在系统启动后,会将init.rc
文件装在到内存,修改init文件的内容实际上只是修改内存中的init.rc文件的内容,一旦
系统重启,init.rc文件的内容就会回复到最初的装载。想要彻底修改init.rc文件的内容,
只能修改内核镜像中的init.rc文件后重新打包生成内核镜像,并刷机,工作量很大。对于
一个Android设备来说,在一些情况下需要抓取调试信息,如在开发、测试的过程中;而在另
一些情况下并不需要抓取调试信息,如正式交付使用后。这就要求调试信息获取单元120和
驱动调试信息获取单元130随Android设备启动而启动这一过程是可控的,可以根据需要开
启或关闭,但是通过频繁修改init.rc文件来实现这一功能的开启和关闭会耗费很大的工
作量。因此启动单元110在init.rc文件中添加了一个属性,并将用于启动应用调试信息获
取单元120和驱动调试信息获取单元130的Service对应到该属性,通过为该属性设置不同
的属性值来控制该Service的开启和关闭。例如当该属性的值为0时,该Service关闭,此时
调试信息获取单元120和驱动调试信息获取单元130不会随Android设备启动而启动;当该
属性值为1时,该Service开启,此时调试信息获取单元120和驱动调试信息获取单元130随
Android设备启动而启动。

Android系统中有多种类型的属性,用于管理系统配置和状态,在系统启动的过程
中会按照一定的顺序从多个属性配置文件中加载属性。在系统重启后,有的属性会消失,但
以persist为前缀的属性,当设置这个属性值时,其值也将写入/data/property,这样在系
统重启后,该属性的值就不会消失了。因此本实施例中,启动单元110在init.rc文件中为该
Service添加一个以persist为前缀的属性,用于控制Service启动和关闭,然后在属性配置
文件system.prop中配置该属性的值,使该属性为开启状态,这样就可以实现调试信息获取
单元120和驱动调试信息获取单元130随Android设备启动而启动。当不再需要抓取调试信
息时,只需要在属性配置文件system.prop修改该属性的值,使该属性为关闭状态即可。

优选地,本实施例中,应用调试信息获取单元120具体用于,执行一次logcat命令,
将缓冲区中产生的应用调试信息实时写入Android设备自身的存储设备中的第一文本文
件,并保存该文件。Android日志系统提供了记录和查看调试信息的功能,日志都是从各种
软件和一些系统的缓冲区中记录下来的,缓冲区可以通过logcat命令来查看和使用,例如
可以通过adb logcat>xxx.txt实时将缓冲区中的应用调试信息保存到xxx.txt文件中,如
果不手动停止该命令,每当有新的信息进入缓冲区,logcat都会将新信息记录到xxx.txt
中,因此只需要执行一次logcat命令。

驱动调试信息获取单元130具体用于,按照预设的时间间隔,循环调用klogctl函
数,将内核缓冲区中产生的驱动调试信息写入Android设备自身的存储设备中的第二文本
文件,删除内核缓冲区中已被读出的驱动调试信息,并保存该文件。驱动调试信息记录在内
核缓冲区中,klogctl函数能够读取和控制内核缓冲区,在为klogctl函数选择合适的参数
之后,klogctl能够仅从日志读取所有消息或者从日志读取所有消息后清除所有消息。由于
新的驱动调试信息会不断进入内核缓冲区中,因此需要按照特定的时间间隔,例如1秒,循
环调用klogctl函数。为了避免两次读取的信息中可能存在重复的部分,本实施例中
klogctl函数以读取所有消息后清除所有消息的方式被调用。

应用调试信息获取单元120和驱动调试信息获取单元130不断将抓取到的应用调
试信息和驱动调试信息写入文本文件,如果不加以限制,最终会导致文本文件过大耗尽设
备的存储空间。为了解决这一问题,一方面可以对抓取的调试信息进行筛选,例如仅抓取指
定级别以上的调试信息,或者仅抓取特定来源的调试信息等。另一方面,可以将文本文件限
定为特定的大小,若当前写入的位置没有超出限制值,则在当前位置写入调试信息;若当前
写入的位置超出了限制值,则返回文件开头写入调试信息,这样新的信息会覆盖旧的信息,
保证记录有调试信息的文本文件不会过大。

实施例二

图2是本发明一个实施例提供的一种抓取Android设备调试信息的方法的流程图,
如图2所示,本实施例提供的抓取Android设备调试信息的方法包括:

步骤S210:预先在Android设备中设置一个抓取Android设备调试信息的装置,在
Android设备启动时,启动该装置。

步骤S220:从Android设备启动时开始,利用该装置抓取Android设备在运行过程
中产生的应用调试信息,并存储到Android设备自身的存储设备中。

步骤S230:从Android设备启动时开始,利用该装置抓取Android设备在运行过程
中产生的驱动调试信息,并存储到Android设备自身的存储设备中。

Android设备自身的存储设备可以是闪存芯片或SD卡。

优选地,步骤S210中“在Android设备启动时,启动该装置”,具体包括:

在Android系统的init.rc文件中新建一个服务或利用init.rc文件中某一个已有
的服务,并将该装置配置到该服务;

在init.rc文件中为该服务添加一个以persist为前缀的属性;

在Android系统的属性配置文件中设定该属性的值,使该属性为开启状态。

优选地,步骤S220中“利用该装置抓取Android设备在运行过程中产生的应用调试
信息,并存储到Android设备自身的存储设备中”,具体包括:

执行一次logcat命令,将缓冲区中产生的应用调试信息实时写入Android设备自
身的存储设备中的第一文本文件,并保存该文件;

若当前写入的位置没有超出对第一文本文件大小的限制值,则在当前位置写入应
用调试信息;若当前写入的位置超出了限定值,则返回第一文本文件开头写入应用调试信
息。

优选地,步骤S230中“利用该装置抓取Android设备在运行过程中产生的驱动调试
信息,并存储到Android设备自身的存储设备中”,具体包括:

按照预设的时间间隔,循环调用klogctl函数,将内核缓冲区中产生的驱动调试信
息写入Android设备自身的存储设备中的第二文本文件,删除内核缓冲区中已被读出的驱
动调试信息,并保存该文件;

若当前写入的位置没有超出对第二文本文件大小的限制值,则在当前位置写入应
用调试信息;若当前写入的位置超出了所述限制值,则返回第二文本文件开头写入应用调
试信息。

以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员
可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具
体描述只是更好的解释本发明的目的,本发明的保护范围应以权利要求的保护范围为准。

需要说明的是:

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行
的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用
微处理器或者数字信号处理器(DSP)来实现根据本发明实施例中的一些或者全部部件的一
些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设
备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存
储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特
网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

本发明的抓取Android设备调试信息的装置传统上包括处理器和以存储器形式的
计算机程序产品或者计算机可读介质。存储器可以是诸如闪存、EEPROM(电可擦除可编程只
读存储器)、EPROM、硬盘或者ROM之类的电子存储器。存储器具有用于执行上述方法中的任
何方法步骤的程序代码的存储空间。例如,用于程序代码的存储空间可以包括分别用于实
现上面的方法中的各种步骤的各个程序代码。这些程序代码可以从一个或者多个计算机程
序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸
如硬盘,紧致盘(CD)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为
便携式或者固定存储单元。该存储单元可以类似布置的存储段、存储空间等。程序代码可以
例如以适当形式进行压缩。通常,存储单元包括用于执行根据本发明的方法步骤的计算机
可读代码,即可以由例如处理器读取的代码,这些代码被运行时,导致该抓取Android设备
调试信息的装置执行上面所描述的方法中的各个步骤。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领
域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。单词“包括”不排
除存在未列在权利要求中的元件或步骤。本发明可以借助于包括有若干不同元件的硬件以
及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的
若干个可以是通过同一个硬件项来具体体现。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施
例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结
构和技术,以便不模糊对本说明书的理解。本说明书中使用的语言主要是为了可读性和教
导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。

一种抓取ANDROID设备调试信息的方法和装置.pdf_第1页
第1页 / 共10页
一种抓取ANDROID设备调试信息的方法和装置.pdf_第2页
第2页 / 共10页
一种抓取ANDROID设备调试信息的方法和装置.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《一种抓取ANDROID设备调试信息的方法和装置.pdf》由会员分享,可在线阅读,更多相关《一种抓取ANDROID设备调试信息的方法和装置.pdf(10页珍藏版)》请在专利查询网上搜索。

本发明公开了一种抓取Android设备调试信息的方法和装置,该装置设置在Android设备中,包括启动单元、应用调试信息获取单元、驱动调试信息获取单元;启动单元用于在Android设备启动时,启动应用调试信息获取单元和驱动调试信息获取单元;应用调试信息获取单元和驱动调试信息获取单元分别抓取Android设备在运行过程中产生的应用调试信息和驱动调试信息,并存储到Android设备自身的存储设备中。A。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1