CN110716845B - 一种Android***的日志信息读取的方法 - Google Patents

一种Android***的日志信息读取的方法 Download PDF

Info

Publication number
CN110716845B
CN110716845B CN201910935721.4A CN201910935721A CN110716845B CN 110716845 B CN110716845 B CN 110716845B CN 201910935721 A CN201910935721 A CN 201910935721A CN 110716845 B CN110716845 B CN 110716845B
Authority
CN
China
Prior art keywords
log information
base address
flash memory
kernel
pstore
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
CN201910935721.4A
Other languages
English (en)
Other versions
CN110716845A (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.)
Shanghai Longcheer Technology Co Ltd
Original Assignee
Shanghai Longcheer Technology 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 Shanghai Longcheer Technology Co Ltd filed Critical Shanghai Longcheer Technology Co Ltd
Priority to CN201910935721.4A priority Critical patent/CN110716845B/zh
Publication of CN110716845A publication Critical patent/CN110716845A/zh
Application granted granted Critical
Publication of CN110716845B publication Critical patent/CN110716845B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording 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/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)

Abstract

与现有技术相比,本申请通过一种Android***的日志信息读取的方法,首先在Android***的Bootloader中,与Kernel中Pstore文件***的基地址建立关联;接着读取所述基地址及其后面空间内存储的日志信息并将所述日志信息写入闪存存储器的空白存储区域;然后向CPU写入进入下载模式的指令;当接收到触发所述进入下载模式的指令,触发进入下载模式,以读取所述闪存存储器的空白存储区域存储的日志信息。该方法可以在不依赖Android***完全启动的情况下把Pstore日志信息读取出来进行分析和故障定位,对提高设备开发效率以及寻求设备性能改善对策具有实际意义。

Description

一种Android***的日志信息读取的方法
技术领域
本申请涉及计算机信息处理技术领域,尤其涉及一种Android***的日志信息读取的技术。
背景技术
当前信息时代的终端设备有很大比例采用的是Android***,Android***是一种基于LinuxKernel(Linux***内核)的自由及开放源代码的操作***,中文名称“安卓***”,是全球最大的智能终端设备操作***。
一台正常的Android设备,从***角度,开机流程如图1:硬件平台先加载Bootloader(引导加载程序),引导程序会启动Kernel,然后kernel启动后,Linux会启动Android相关模块。在Android设备中,BootLoader是在设备开机后,Kernel运行之前运行,可以初始化硬件、建立内存空间映射,为装载Kernel准备好运行环境。Kernel是操作***的核心部分,由操作***中用于管理存储器、文件、外设和***资源的部分组成。
设备从开机、初始化到操作***完全启动,以及各种应用程序的运行,都会产生相关日志信息,通常情况下相关日志信息存储在RAM相应存储区域中,但设备重启后存储在RAM相应存储区域中的上一次设备运行时的数据会丢失或被覆盖,存储在RAM相应存储区域中的只是当次设备运行的相关日志信息。
如果Android设备开机运行到Kernel阶段陷入一些不可恢复的异常时,除了设备重启没有什么更好的手段,在设备重启之前Kernel会记录出现异常的寄存器、堆栈等故障场景信息作为日志,以供故障分析、定位之用,这些信息称为KernelOops信息,Ramoops是指采用RAM空间保存KernelOops信息的一个功能,在LinuxKernel 3.10.4之后的版本中,Ramoops已经采用Pstore(persistentstorage的缩写,永久性存储)机制来实现。Pstore是一种数据读取机制,当Kernel发生异常时,Pstore机制能将保存到RAM或硬盘等存储区域的Kernel的运行日志信息读取出来,以文件***的方式挂载在sys***的目录树上。Ramoops将Android设备本次开机的KernelOops信息作为***日志写入内存中的某个特定地址,在设备带电重启(热启动)后,Pstore机制从这个特定的内存地址中读取出***日志,以文件***的方式挂载在sys***的目录树上,供用户读取。
如果Andriod设备自上一次开机以来没有断电,那么重启后到Bootloader阶段内存RAM中仍然大部分保留了上一次设备运行的数据,包括Pstore机制存储的日志信息。
现有Pstore日志信息的读取通常是在Android***完全启动后进行的,当Android***出现***崩溃、死机等异常问题时,往往需要获取相关日志信息来分析可能导致异常问题的原因,但是现有的日志信息读取方式却无法读取到与异常相关的日志信息。
发明内容
为了解决上述问题,本申请的目的是提供一种Android***的日志信息读取的方法。
根据本申请的一个方面,提供了一种Android***的日志信息读取的方法,其中,所述方法包括:
在Android***的Bootloader中,与Kernel中Pstore文件***的基地址建立关联;
读取所述基地址及其后面空间内存储的日志信息并将所述日志信息写入闪存存储器的空白存储区域;
当写入所述日志信息完成后,向CPU写入进入下载模式的指令;
当接收到触发所述进入下载模式的指令,触发进入下载模式,以读取所述闪存存储器的空白存储区域存储的日志信息。
优选地,所述与Kernel中Pstore文件***的基地址建立关联的方式包括以下任一项:
在Bootloader中,定义随机存储器的一个存储地址,将所述存储地址传入Kernel作为Kernel中Pstore文件***的基地址;
定义一个指针变量,将其赋值为Kernel中Pstore文件***的基地址。
优选地,所述闪存存储器的空白存储区域包括以下任一项:
所述闪存存储器中一段预留的分区;
所述闪存存储器中某一个分区的末端空白部分。
优选地,所述一种Android***的日志信息读取的方法还包括:
读取所述基地址及其后面空间内存储的日志信息并将所述日志信息写入闪存存储器的空白存储区域和所述当写入所述日志信息完成后,向CPU写入进入下载模式的指令是通过在Bootloader中增加一个主函数来实现的。
优选地,所述一种Android***的日志信息读取的方法还包括:通过新增fastboot命令,将所述主函数与触发所述下载模式的指令进行绑定,以使所述下载模式的指令被触发时,所述主函数的功能被调用。
与现有技术相比,本申请通过一种Android***的日志信息读取的方法,首先在Android***的Bootloader中,与Kernel中Pstore文件***的基地址建立关联;接着读取所述基地址及其后面空间内存储的日志信息并将所述日志信息写入闪存存储器的空白存储区域;然后向CPU写入进入下载模式的指令;当接收到触发所述进入下载模式的指令,触发进入下载模式,以读取所述闪存存储器的空白存储区域存储的日志信息。通过上述方法,在设备热重启时切换到fastboot模式,然后输入指令,进入下载模式,在下载模式下可读取上一次设备运行时的***日志信息。该方法可以在Android***无法正常启动的情况下,把Pstore日志信息读取出来进行分析和故障定位,对提高设备开发效率以及寻求设备性能改善对策具有实际意义。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出Android***设备1的开机流程框图;
图2示出根据本申请一个方面的一种Android***的日志信息读取的方法流程框图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本发明作进一步详细描述。
在本申请一个典型的配置中,***各模块和可信方均包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为更进一步阐述本申请所采取的技术手段及取得的效果,下面结合附图及优选实施例,对本申请的技术方案,进行清楚和完整的描述。
图2示出本申请一个方面的一种Android***的日志信息读取的方法流程框图,其中,一个实施例的方法包括:
S21在Android***的Bootloader中,与Kernel中Pstore文件***的基地址建立关联;
S22读取所述基地址及其后面空间内存储的日志信息并将所述日志信息写入闪存存储器的空白存储区域;
S23当写入所述日志信息完成后,向CPU写入进入下载模式的指令;
S24当接收到触发指令,进入下载模式,以读取所述闪存存储器的空白存储区域存储的日志信息。
在本申请中,所述方法通过设备1执行,所述设备1为安装了Android***的移动终端设备、可穿戴设备或其它设备,例如智能手机、平板电脑、智能手表、智能手环、智能眼镜、无人驾驶汽车等。
在此,所述移动终端设备、可穿戴设备或其它设备仅为举例,其他现有的或者今后可能出现的设备和/或资源共享平台如适用于本申请也应包含在本申请的保护范围内,在此,以引用的方式包含于此。
在该实施例中,在所述步骤S21中,Android***的Bootloader中,与Kernel中Pstore文件***的基地址建立关联。
其中,所述Android***的Bootloader,以及Kernel都是基于Android***设备1开机初始化过程中的一个阶段。
优选地,所述与Kernel中Pstore文件***的基地址建立关联的方式包括以下任一项:
在Bootloader中,定义随机存储器的一个存储地址,将所述存储地址传入Kernel作为Kernel中Pstore文件***的基地址;
定义一个指针变量,将其赋值为Kernel中Pstore文件***的基地址。
具体地,根据设备1的内存分布状态,定义一个合理的内存地址,把这个内存地址通过commandline(命令行)传入Kernel,作为Kernel中ramoops机制的Pstore文件***基地址。
也可以根据设备1的内存分布状态,直接定义一个指针变量,将其赋值为当前Kernel中使用的Pstore文件***的基地址。
继续在该实施例中,在所述步骤S22中,读取所述基地址及其后面空间内存储的日志信息并将所述日志信息写入闪存存储器的空白存储区域。
优选地,所述闪存存储器的空白存储区域包括以下任一项:
所述闪存存储器中一段预留的分区;
所述闪存存储器中某一个分区的末端空白部分。
具体地,根据设备1的闪存存储器的存储空间规划状况,将未规划使用的一段预留分区用于存储从Pstore文件***的基地址及其后面空间内存储读取的日志信息。
也可以根据设备1的闪存存储器的存储空间规划状况,某一个分区的末端未使用的空白部分用于存储从Pstore文件***的基地址及其后面空间内存储读取的日志信息。
无论采用何种方式规划闪存存储器的空白存储区域,都应确保分配的空白存储区域大小足够用于存储从Pstore文件***的基地址及其后面空间内存储读取的日志信息,确保不会因规划的闪存存储器的空白存储区域大小不足而导致从Pstore文件***的基地址及其后面空间内存储读取的日志信息的部分内容因无存储空间而丢失,从而可能影响日志信息的完整性。
继续在该实施例中,在所述步骤S23中,当写入所述日志信息完成后,向CPU写入进入下载模式的指令。
优选地,通过在Bootloader中增加一个主函数来实现读取所述基地址及其后面空间内存储的日志信息并将所述日志信息写入所述闪存存储器的空白存储区域,并在写入所述日志信息完成后,向CPU写入进入下载模式的指令。
继续在该实施例中,在所述步骤S24中,当接收到触发指令,进入下载模式,以读取所述闪存存储器的空白存储区域存储的日志信息。
优选地,新增fastboot命令,将所述新增fastboot命令与所述主函数绑定,以使所述fastboot命令被触发时,所述主函数的功能被调用。
其中,通过在fastboot命令集中新增命令,来将所述新增命令与所述主函数绑定,在设备1处于fastboot模式下时输入所述新增命令来触发所述主函数,实现读取所述基地址及其后面空间内存储的日志信息并将所述日志信息写入所述闪存存储器的空白存储区域,并在写入所述日志信息完成后,向CPU写入进入下载模式的指令,进入下载模式,以读取所述闪存存储器的空白存储区域存储的日志信息。
具体地,设备1热重启后在用户干预下进入fastboot模式,用户在fastboot模式下输入所述新增命令来触发所述主函数。
进一步地,在设备1处于下载模式下时,用户可以通过专用工具从设备1中把写入所述闪存存储器的空白存储区域的日志信息读取出来做进一步分析,以便确定设备1上一次异常的具体原因。
根据本申请的又一方面,还提供了一种计算机可读介质,所述计算机可读介质存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现前述方法。
根据本申请的又一方面,还提供了一种Android***的日志信息读取的设备,其中,该设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如前述方法的操作。
例如,计算机可读指令在被执行时使所述一个或多个处理器:在Android***的Bootloader中,与Kernel中Pstore文件***的基地址建立关联;读取所述基地址及其后面空间内存储的日志信息并将所述日志信息写入闪存存储器的空白存储区域;当写入所述日志信息完成后,向CPU写入进入下载模式的指令;当接收到触发所述进入下载模式的指令,触发进入下载模式,以读取所述闪存存储器的空白存储区域存储的日志信息。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

Claims (6)

1.一种Android***的日志信息读取的方法,其特征在于,所述方法包括:
在Android***的Bootloader中,与Kernel中Pstore文件***的基地址建立关联;
读取所述基地址及其后面空间内存储的日志信息并将所述日志信息写入闪存存储器的空白存储区域;
当写入所述日志信息完成后,向CPU写入进入下载模式的指令;
当接收到触发指令,进入下载模式,以读取所述闪存存储器的空白存储区域存储的日志信息;
通过在Bootloader中增加一个主函数来实现读取所述基地址及其后面空间内存储的日志信息并将所述日志信息写入所述闪存存储器的空白存储区域,并在写入所述日志信息完成后,向CPU写入进入下载模式的指令。
2.根据权利要求1所述的方法,其特征在于,所述与Kernel中Pstore文件***的基地址建立关联的方式包括以下任一项:
在Bootloader中,定义随机存储器的一个存储地址,将所述存储地址传入Kernel作为Kernel中Pstore文件***的基地址;
定义一个指针变量,将其赋值为Kernel中Pstore文件***的基地址。
3.根据权利要求2所述的方法,其特征在于,所述闪存存储器的空白存储区域包括以下任一项:
所述闪存存储器中一段预留的分区;
所述闪存存储器中某一个分区的末端空白部分。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
新增fastboot命令,将所述新增fastboot命令与所述主函数绑定,以使所述fastboot命令被触发时,所述主函数的功能被调用。
5.一种计算机可读介质,其中,
其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现如权利要求1至4中任一项所述的方法。
6.一种用于Android***的日志信息读取的设备,其中,
该设备包括:
一个或多个处理器;以及
存储有计算机可读指令的存储器,所述计算机可读指令在被执行时使所述处理器执行如权利要求1至4中任一项所述方法的操作。
CN201910935721.4A 2019-09-29 2019-09-29 一种Android***的日志信息读取的方法 Active CN110716845B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910935721.4A CN110716845B (zh) 2019-09-29 2019-09-29 一种Android***的日志信息读取的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910935721.4A CN110716845B (zh) 2019-09-29 2019-09-29 一种Android***的日志信息读取的方法

Publications (2)

Publication Number Publication Date
CN110716845A CN110716845A (zh) 2020-01-21
CN110716845B true CN110716845B (zh) 2024-03-12

Family

ID=69211124

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910935721.4A Active CN110716845B (zh) 2019-09-29 2019-09-29 一种Android***的日志信息读取的方法

Country Status (1)

Country Link
CN (1) CN110716845B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108388496A (zh) * 2018-01-23 2018-08-10 晶晨半导体(上海)股份有限公司 一种***日志的收集方法
CN112052445A (zh) * 2020-09-21 2020-12-08 深兰科技(上海)有限公司 控制Android设备ADB权限的方法、Android设备和存储介质
CN112115097B (zh) * 2020-09-28 2023-08-29 合肥沛睿微电子股份有限公司 运行日志信息的访问方法及存储设备
CN112540874A (zh) * 2020-12-08 2021-03-23 广东小天才科技有限公司 智能设备死机日志采集方法、***、电子设备及存储介质
CN113535660B (zh) * 2021-07-28 2023-09-05 展讯通信(天津)有限公司 安卓日志存储方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9003106B1 (en) * 2012-11-26 2015-04-07 Emc Corporation Crash consistency
CN106682162A (zh) * 2016-12-26 2017-05-17 浙江宇视科技有限公司 日志管理方法及装置
CN109101358A (zh) * 2018-07-27 2018-12-28 郑州云海信息技术有限公司 服务器***及其硬件日志记录装置及方法
CN109189612A (zh) * 2018-09-04 2019-01-11 广东小天才科技有限公司 一种Linux内核异常时的日志处理方法及电子设备
CN110147304A (zh) * 2019-04-03 2019-08-20 珠海全志科技股份有限公司 一种获取***启动装载日志的方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5659892B2 (ja) * 2011-03-15 2015-01-28 富士通株式会社 情報処理装置、及び携帯端末装置並びに該情報処理装置におけるログ出力の制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9003106B1 (en) * 2012-11-26 2015-04-07 Emc Corporation Crash consistency
CN106682162A (zh) * 2016-12-26 2017-05-17 浙江宇视科技有限公司 日志管理方法及装置
CN109101358A (zh) * 2018-07-27 2018-12-28 郑州云海信息技术有限公司 服务器***及其硬件日志记录装置及方法
CN109189612A (zh) * 2018-09-04 2019-01-11 广东小天才科技有限公司 一种Linux内核异常时的日志处理方法及电子设备
CN110147304A (zh) * 2019-04-03 2019-08-20 珠海全志科技股份有限公司 一种获取***启动装载日志的方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Acquisition and analysis of volatile memory from android devices";Joe Sylve等;《Digital Investigation》;20120229;第8卷(第3-4期);全文 *
面向Android***的目录自适应日志模式选择机制;徐远超;孙凤芸;闫俊峰;万虎;;计算机应用;20151010(10);全文 *

Also Published As

Publication number Publication date
CN110716845A (zh) 2020-01-21

Similar Documents

Publication Publication Date Title
CN110716845B (zh) 一种Android***的日志信息读取的方法
CN111708738B (zh) 实现hadoop文件***hdfs与对象存储s3数据互访方法及***
CN114327777B (zh) 确定全局页目录的方法、装置、电子设备及存储介质
JP7012074B2 (ja) 仮想ディスクの拡張方法及び機器
CN109324874B (zh) 一种虚拟机内存快照导入块设备的方法、***及装置
CN112667246B (zh) 应用功能扩展的方法、装置及电子设备
CN113010265A (zh) Pod的调度方法、调度器、存储插件及***
CN112445780A (zh) 一种基于快照的主从架构部署方法及设备
CN116049207A (zh) 应用程序sql脚本处理方法、装置、处理器及电子设备
CN113190241B (zh) 数据分区的容量扩充方法、装置、电子设备、存储介质
CN108694052B (zh) 一种固件升级方法、固件升级装置及固件升级***
US20160170869A9 (en) Systems and methods for in-place reorganization of device storage
CN111913753A (zh) 一种windows***云迁移中启动方式的变更方法及***
CN110968333B (zh) 配置信息替换方法和装置、机器可读存储介质及处理器
CN116775061A (zh) 微服务应用的部署方法、装置、设备及存储介质
CN111782474A (zh) 日志处理方法、装置、电子设备和介质
CN111737223B (zh) 一种文件拷贝方法、装置、设备及存储介质
CN114510375A (zh) 一种Flash芯片数据区域动态共享***及方法
CN111651177A (zh) 基于安卓平台的写号方法、设备及计算机可读介质
CN110515751B (zh) 一种加载运行VxWorks实时保护进程的方法及***
CN102750167A (zh) 应用程序启动方法、装置和计算机***
US10795771B2 (en) Information handling system with reduced data loss in block mode
CN111367836B (zh) 一种针对数据库的处理方法及装置
US11755425B1 (en) Methods and systems for synchronous distributed data backup and metadata aggregation
CN110580169A (zh) 一种通过USB存储设备对android***进行复制并重写的方法

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