CN108073507B - 一种内核崩溃现场数据的处理方法及装置 - Google Patents
一种内核崩溃现场数据的处理方法及装置 Download PDFInfo
- Publication number
- CN108073507B CN108073507B CN201611024011.9A CN201611024011A CN108073507B CN 108073507 B CN108073507 B CN 108073507B CN 201611024011 A CN201611024011 A CN 201611024011A CN 108073507 B CN108073507 B CN 108073507B
- Authority
- CN
- China
- Prior art keywords
- address space
- data
- storage address
- crash
- kernel
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
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)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种内核崩溃现场数据的处理方法及装置。该方法包括:在嵌入式多媒体卡eMMC的安卓Android/data分区中预分配至少一块用于保存崩溃内核现场数据的存储地址空间,并记录所述存储地址空间的地址信息;内核崩溃触发重启后,在bootloader中根据记录的所述存储地址空间的地址信息将所述崩溃内核现场数据写入到所述存储地址空间;重启时根据记录的所述存储地址空间的地址信息将所述存储地址空间的数据读取到新建的转储文件中。本发明实施例提供的技术方案能够适用于所有Linux内核崩溃的场景,覆盖场景广泛,适用性强。同时,在保存崩溃内核的现场数据时无需额外移植***扩展文件***和安卓Android6.0提出的加密算法,进而降低保存崩溃内核现场数据的的成本,更加方便使用。
Description
技术领域
本发明实施例涉及内核技术,尤其涉及一种内核崩溃现场数据的处理方法及装置。
背景技术
Linux内核是一个多任务,可抢占的功能集合。由于内核的代码很难轻易的在仿真器或调试器中执行和跟踪,因此,工程师们采用一种工具用于在内核崩溃之后保存现场的内核数据以供分析。这种工具统称为内存转储(Ramdump)工具。
目前,主流的Ramdump工具的实现方式为:当内核崩溃重启之后,在引导加载bootloader(如:Uboot)里面判断是否为异常重启,如果是异常重启则保存内存现场到存储介质中。bootloader(如:uboot)收集完崩溃的现场内核数据之后,将这些数据保存到嵌入式多媒体卡(Embedded Multi Media Card,eMMC)的数据(Android/data)分区中,工程师拿到这些保存的数据就可以利用相应的工具(如:GDB,Crash等)做相应的问题分析。
但是,bootloader不支持***扩展文件***(Fourth extended filesystem,ext4),且安卓Android6.0之后,嵌入式多媒体卡eMMC中的/data分区强制加密。因此,bootloader在保存ramdump到/data分区之前,需要移植***扩展文件***ext4的文件***引擎,并实现安卓Android6.0对/data分区加解密的算法,实现难度大,工作量大,且维护成本高。
发明内容
本发明提供一种内核崩溃现场数据的处理装置及方法,以实现对内核崩溃现场数据进行保存时,覆盖性更广、适用性更强以及使用更加方便。
第一方面,本发明实施例提供了一种内核崩溃之后现场数据的处理方法,包括:
在嵌入式多媒体卡eMMC的安卓Android/data分区中预分配至少一块用于保存崩溃内核现场数据的存储地址空间,并记录所述存储地址空间的地址信息;
内核崩溃触发重启后,在bootloader中根据记录的所述存储地址空间的地址信息将所述崩溃内核现场数据写入到所述存储地址空间;
重启时根据记录的所述存储地址空间的地址信息将所述存储地址空间的数据读取到新建的转储文件中。
第二方面,本发明实施例还提供了一种内核崩溃之后现场数据的处理装置,包括:
地址索引单元,用于在嵌入式多媒体卡eMMC的安卓Android/data分区中预分配至少一块用于保存崩溃内核现场数据的存储地址空间,并记录所述存储地址空间的地址信息;
数据存储单元,用于内核崩溃触发重启后,在bootloader中根据所述地址索引单元记录的所述存储地址空间的地址信息将所述崩溃内核现场数据写入到所述存储地址空间;重启时根据记录的所述存储地址空间的地址信息将所述存储地址空间的数据读取到新建的转储文件中。
本发明实施例中,当内核崩溃触发***重启到引导加载程序bootloader时,由于内核崩溃数据的存储地址空间已经记录在地址信息中,(该存储地址空间对应于dummy-ramdump文件的各个数据块的存储地址),因此将崩溃内核的现场数据根据地址信息保存时,无需使用***扩展文件***的支持,从而无需在bootloader中移植***扩展文件***的文件***引擎(EXT4)。另外,虽然崩溃内核的现场数据已经保存在存储地址空间中,但是由于bootloader在保存内核崩溃数据的时候没有使用Android6.0的/data分区加密算法,所以,Android无法通过文件***接口正常访问存储地址空间。但是,Android依然可以通过地址信息读出存储地址空间的内容,然后把内容通过文件***读写接口写入在/data中新建的转储文件(新ramdump文件)中。这个转储文件是使用了Android的加密算法方式建立生成的。所以,转储文件可以正常被访问。通过上述方式,可以规避在bootloader中移植Android加密算法的需求。可见,本发明实施例提供的技术方案能够适用于所有Linux内核崩溃的场景,覆盖场景广泛,适用性强。同时,在保存崩溃内核现场数据时无需在bootloader中移植***扩展文件***和安卓Android6.0提出的加密算法,进而降低保存崩溃内核现场数据的成本,更加方便使用。
附图说明
图1是本发明实施例一中的一个内核崩溃现场数据的处理方法的流程图;
图2是本发明实施例二中的一个内核崩溃现场数据的处理方法的流程图;
图3是本发明实施例二中的地址索引文件存储示意图;
图4是本发明实施例三中的一个内核崩溃现场数据的处理方法的流程图;
图5是本发明实施例四中的一个内核崩溃现场数据的处理方法的流程图;
图6是本发明实施例四中的另一个内核崩溃现场数据的处理方法的流程图;
图7是本发明实施例五中的一个内核崩溃现场数据的处理装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种内核崩溃现场数据的处理方法的流程图,本实施例可适用于Linux内核崩溃时对内核崩溃现场数据进行记录的情况,该方法可以由Linux内核调试工具来执行,该工具可在个人电脑、平板电脑等电子设备中运行,具体包括如下步骤:
步骤110、在嵌入式多媒体卡eMMC的安卓Android/data分区中预分配至少一块用于保存崩溃内核现场数据的存储地址空间,并记录所述存储地址空间的地址信息。
通过调试软件对嵌入式多媒体卡eMMC中安卓Android/data分区进行配置。通常eMMC将某个存储分区作为安卓Android/data分区,如D盘。可选的,在eMMC中除/data分区以外的另一个存储分区中,如E盘,划分出一个连续的固定的存储区域作为存储地址空间,将该存储空间对应的地址区域作为存储地址空间。
然而,由于在/data分区以外的另一个存储分区中设置连续固定的存储区域时,存储资源的利用率低,因此,优选的,在该存储分区中生成一个内容为空的dummy-ramdump文件(又称为假转储文件),并记录dummy-ramdump文件的各个数据块在/data分区中对应的存储区域的地址信息。
生成dummy-ramdump文件时,会根据当前存储空间的使用情况从空闲的存储空间中选择合适的存储空间用于存储预设内存转储文件的数据。选择出的存储空间可以为连续的,也可以为非连续的。对于非连续的存储空间可通过链表等方式对非连续的存储空间的数据存储先后顺序进行记录。
例如,将地址为{0-100}作为第一个数据块对应的存储区域,将{150-200}作为第二个数据块对应的存储区域,将{220-350}作为第三个数据块对应的存储区域。需要说明的是,eMMC中的数据单位为eMMC数据块。可选的,在上例中,每个eMMC数据块的大小为512字节。记录dummy-ramdump文件对应的多个(上例中为3个)存储区域的地址信息。
在不进行压缩的情况下,dummy-ramdump文件的数据大小与为设备所使用的内存总容量相等,以便能够将内存中崩溃现场数据全部存储到dummy-ramdump文件中。
步骤120、内核崩溃触发重启后,在bootloader中根据记录的存储地址空间的地址信息将崩溃内核现场数据写入到存储地址空间。
安卓***在启动时,首先进行bootloader阶段,bootloader阶段结束后启动安卓操作***。在bootloader中,根据步骤110中得到的存储空间的地址信息,将崩溃内核现场数据写入到地址信息对应的eMMC的/data分区中。写入时,可根据地址信息对应的/data区域中的eMMC地址空间的数据量对崩溃内核现场数据进行划分,并将分割为后的崩溃内核现场数据存储到相应的eMMC数据块中。
步骤130、重启时根据记录的存储地址空间的地址信息将存储地址空间的数据读取到新建的转储文件中。
重启时,首先利用***扩展文件***新建一个内存转储文件(新Ramdump文件)。然后,根据步骤110记录的存储空间的地址信息,读取地址信息中的数据。最后,将读取到的数据写入到新Ramdump文件中。文件***通过访问新建的内核转储文件可得到崩溃内核现场数据。之后可根据新Ramdump文件中记录在的崩溃内核现场数据进行进一步的分析,以得到崩溃的解决方案。
示例性的,下面通过一个示例对上述方法进行举例说明:
首先,在安卓Android正常开机运行时,在Android/data中预创建一个大小为设备所使用的内存总体容量的百分之五十的dummy-ramdump文件(又称假ramdump文件)。创建dummy-ramdump文件时,***会在/data中分配相应大小的存储空间作为dummy-ramdump文件对应的存储空间,该存储空间可以为连续的或者不连续的,每个存储空间对应dummy-ramdump的一个数据块。创建dummy-ramdump文件后,可获取dummy-ramdump文件各个数据块对应的存储空间的地址信息,对dummy-ramdump文件对应的存储空间的地址信息进行保存,具体的可以索引文件的形式保存在固定位置A。
然后,当***崩溃重启到bootloader时,bootloader从固定位置A获取索引文件,根据索引文件的记载确定即将写入崩溃内核现场数据的地址信息。确定地址信息后,将崩溃内核现场数据写到获取的地址信息中,从而将崩溃内存现场数据保存到/data的dummy-ramdump文件中。
最后,当Android重启时,判断dummy-ramdump文件是否有被填写,若dummy-ramdump文件有被填写,则创建一个新ramdump文件,然后,根据索引文件中记载的地址信息,从dummy-ramdump文件对应的存储空间中读取崩溃内核现场数据,并通过标准读写(read/write)操作将读取的数据写入新创建的新ramdump文件中。新ramdump中存储有崩溃内核现场数据。
进一步的,当dummy-ramdump文件中的数据块数据全部写入到新ramdump文件中之后,删除/data分区中dummy-ramdump文件的数据块内容,以便下次内存场景恢复时使用。
本实施例中,当内核崩溃触发***重启到引导加载程序bootloader时,由于内核崩溃数据的存储地址空间已经记录在地址信息中,(该存储地址空间对应于dummy-ramdump文件的各个数据块的存储地址),因此将崩溃内核的现场数据根据地址信息保存时,无需使用***扩展文件***的支持,从而无需在bootloader中移植***扩展文件***的文件***引擎(EXT4)。另外,虽然崩溃内核的现场数据已经保存在存储地址空间中,但是由于bootloader在保存内核崩溃数据的时候没有使用Android6.0的/data分区加密算法,所以,Android无法通过文件***接口正常访问存储地址空间。但是,Android依然可以通过地址信息读出存储地址空间的内容,然后把内容通过文件***读写接口写入在/data中新建的转储文件(又称新ramdump文件)中。这个转储文件是使用了Android的加密算法方式建立生成的。所以,转储文件可以正常被访问。通过上述方式,可以规避在bootloader中移植Android加密算法的需求。可见,本发明实施例提供的技术方案能够适用于所有Linux内核崩溃的场景,覆盖场景广泛,适用性强。同时,在保存崩溃内核现场数据时无需在bootloader中移植***扩展文件***和安卓Android6.0提出的加密算法,进而降低保存崩溃内核现场数据的成本,更加方便使用。
实施例二
图2为本发明实施例二提供的一种内核崩溃现场数据的处理方法,作为对实施例一的进一步说明,步骤110中,记录存储地址空间的地址信息,可通过下述方式进行实施:
步骤110a、在嵌入式多媒体卡eMMC的安卓Android/data分区中,预先分配一个地址索引文件,地址索引文件用于记录每块存储地址空间的索引信息,索引信息包括每个存储地址空间的地址范围。
当dummy-ramdump文件生成后,在/data分区中再建立一个地址索引文件。地址索引文件记载的地址信息将作为步骤120和步骤130写入和读取数据的数据位置依据。
示例性的,图3为本发明实施例二提供的一种地址索引文件与存储空间的映射关系图。如图3所示,地址索引文件中包括dummy-ramdump文件的总数据量、每个eMMC数据块的大小以及多个数据块的索引信息。其中,数据块为dummy-ramdump文件的数据块,每个数据块的索引信息包括eMMC块起始索引号和eMMC数据块的数量。
相应的,步骤120、在bootloader中根据记录的存储地址空间的地址信息崩溃内核现场数据写入到存储地址空间,包括:
步骤120a、在bootloader中,根据地址索引文件中的索引信息,将崩溃内核现场数据写入到相应存储地址空间。
示例性的,结合图3,根据地址索引文件中eMMC块起始索引号A,可找到/data中第n个eMMC数据块。根据eMMC数据块数量A(如4个),可从第n个eMMC数据块开始,找到eMMC数据块数量A的连续eMMC数据块(如/data分区第n个eMMC数据块、/data分区第n+1个eMMC数据块、第n+2个eMMC数据块、第n+3个eMMC数据块)。同理,根据地址索引文件中eMMC块起始索引号B,可找到/data中第m个eMMC数据块。根据eMMC数据块数量B(如3个),可从第m个eMMC数据块开始,找到eMMC数据块数量B的连续eMMC数据块(如/data分区第m个eMMC数据块、/data分区第m+1个eMMC数据块、第m+2个eMMC数据块)。以此类推,得到dummy-ramdump文件对应的全部eMMC数据块。
相应的,步骤130、重启时根据记录的存储地址空间的地址信息将存储地址空间的数据读取到新建的转储文件中,包括:
步骤130a、重启时,根据地址索引文件中的索引信息,将存储地址空间的数据读取到新建的转储文件中。
根据地址索引文件确定存储地址空间,然后读取存储地址空间中记录的崩溃内核现场数据,并将该崩溃内核现场数据写入到新建的转储文件(即新ramdump文件)。
本实施例中当内核崩溃触发***重启到引导加载程序bootloader时,由于内核崩溃数据的存储地址空间(即上述dummy-ramdump文件)已经记录在地址索引文件中,因此将崩溃内核的现场数据根据地址索引文件保存时,无需使用***扩展文件***的支持,从而无需在bootloader中移植***扩展文件***的文件***引擎(EXT4)。另外,虽然崩溃内核的现场数据已经保存在dummy-ramdump文件中,但是由于bootloader在保存内核崩溃数据的时候没有使用Android6.0的/data分区加密算法,所以,Android无法通过文件***接口正常访问dummy-ramdump文件。但是,Android依然可以通过索引文件读出dummy-ramdump文件的内容,然后把内容通过文件***读写接口写入在/data中新建的ramdump文件中。这个新的ramdump文件是使用了Android的加密算法方式建立生成的。所以,新ramdump文件可以正常被访问。通过上述方式,从而可以规避在bootloader中移植Android加密算法的需求。可见,本发明实施例提供的技术方案能够适用于所有Linux内核崩溃的场景,覆盖场景广泛,适用性强。同时,在保存崩溃内核现场数据时无需在bootloader中移植***扩展文件***和安卓Android6.0提出的加密算法,进而降低保存崩溃内核现场数据的成本,更加方便使用。
实施例三
图4为本发明实施例三提供的一种内核崩溃现场数据的处理方法,作为对上述实施例的进一步说明,步骤120中将崩溃内核现场数据写入到存储地址空间,可通过下述方式进行实施:
步骤121、将崩溃内核现场数据进行压缩。
压缩时,可采用LZO(Lempel-Ziv-Oberhumer)压缩算法或者LZMA(Lempel-Ziv-Markov chain-Algorithm)压缩算法对崩溃内核现场数据进行压缩。
步骤122、将压缩后的崩溃内核现场数据写入到存储地址空间。
进一步的,在将崩溃内核现场数据进行压缩后,根据不同的压缩算法,得到的压缩数据的数据量为压缩前数据量的百分之三十至百分之七十。压缩数据的数据量与压缩算法的压缩率相关,压缩率越高压缩数据的数据量越小,压缩率越低压缩数据的数据量越大。
对为了保证预设内存转储文件能够对崩溃内核现场数据进行保存且不占用过多的空间,建立的dummy-ramdump文件的大小,即在嵌入式多媒体卡eMMC的安卓Android/data分区中预分配至少一块用于保存崩溃内核现场数据的存储地址空间的容量时,可采用下述方式进行分配:
分配一块用于保存崩溃内核现场数据的存储地址空间,所述存储地址空间的大小为设备所使用的内存总容量的百分之三十至百分之七十。设备可以为前述运行Linux内核调试工具的电子设备,该电子设备用于执行本发明实施例提供的方法。
优选的,在嵌入式多媒体卡eMMC的安卓Android/data分区中创建数据大小为所述设备所使用的内存总容量的百分之四十至百分之六十的dummy-ramdump文件。
实现建立的dummy-ramdump文件的数据量与压缩算法的压缩率相一致,进而实现在保存崩溃内核现场数据的同时,节约空间,提高资源利用率。
本实施例提供的技术方案,能够对崩溃内核现场数据进行压缩,进而降低存储内核崩溃时,崩溃内核现场数据占用的数据量,提高资源利用率。
实施例四
图5为本发明实施例四提供的内核崩溃现场数据的处理方法的流程图,作为对上述实施例的进一步说明,在步骤130、重启时根据记录的存储地址空间的地址信息将存储地址空间的数据读取到新建的转储文件中,可通过下述方式进行实施:
步骤131、重启时判断存储地址空间是否已填写。
通过判断dummy-ramdump文件中内容是否为空,可确定存储地址空间是否已填写。或者,根据记录的地址信息判断地址信息内是否存储有数据。
步骤132、若存储地址空间已填写,则在bootloader中根据记录的存储地址空间的地址信息将崩溃内核现场数据写入到存储地址空间。
本实施例提供的技术方案能够判断存储地址空间是否已填写,当已填写时根据记录的所述存储地址空间的地址信息将所述崩溃内核现场数据写入到所述存储地址空间,进而提高数据读取的有效性,提高内存现场恢复的可靠性。
下面通过一个具体场景对上述实施例进行举例说明,如图6所示,***正常开机后,执行如下步骤,若步骤中未指出跳转执行则默认为顺序执行:
步骤201、设置开机原因为“正常(Normal)”。
步骤202、安卓Android第一次开机,且完成对/data分区的加密操作。
步骤203、在/data分区下创建预设大小的假ramdump文件(又称dummy-ramdump文件)。
其中,预设大小为设备所使用的内存总容量的40%-60%。
步骤204、根据***扩展文件***ext4的文件布局规则,解析假ramdump文件的数据块在/data分区中的位置信息。
步骤205、生成地址索引文件记录各数据块对应的位置信息,并在eMMC的固定位置存储该地址索引文件。
步骤206、***崩溃后重启时,触发***异常启动开机。
步骤207、判断开机原因是否为“异常重启开机”。若是,则执行步骤208,否则执行210。
步骤208、判断地址索引文件是否有生成。若生成,则执行步骤209,否则执行210。
步骤209、根据地址索引文件将整个内核数据拷贝到假ramdump文件的数据块中。
步骤210、跳转至内核开机到安卓***。
步骤211、判断假ramdump文件的数据是否有被填写。如果被填写则执行步骤212,否则结束。
步骤212、建立新ramdump文件,根据地址索引文件将假ramdump文件中的数据块内容存储到新ramdump文件中。
步骤213、清除假ramdump文件的数据块内容,以供下次使用。结束。
实施例五
图7为本发明实施例五提供的一种内核崩溃现场数据的处理装置的结构示意图,该装置位于运行Linux内核调试的电子设备中,该电子设备可以为个人电脑或平板电脑等,该装置包括:
地址索引单元11,用于在嵌入式多媒体卡eMMC的安卓Android/data分区中预分配至少一块用于保存崩溃内核现场数据的存储地址空间,并记录所述存储地址空间的地址信息;
数据存储单元12,用于内核崩溃触发重启后,在bootloader中根据所述地址索引单元11记录的所述存储地址空间的地址信息将所述崩溃内核现场数据写入到所述存储地址空间;重启时根据记录的所述存储地址空间的地址信息将所述存储地址空间的数据读取到新建的转储文件中。
进一步的,所述地址索引单元11用于:
在所述嵌入式多媒体卡eMMC的安卓Android/data分区中,预先分配一个地址索引文件,所述地址索引文件用于记录每块存储地址空间的索引信息,所述索引信息包括每个存储地址空间的地址范围;
相应的,所述数据存储单元12用于:
在bootloader中,根据所述地址索引文件中的索引信息,将所述崩溃内核现场数据写入到相应存储地址空间;
重启时,根据所述地址索引文件中的索引信息,将所述存储地址空间的数据读取到新建的转储文件中。
进一步的,所述地址索引单元11用于:
分配一块用于保存崩溃内核现场数据的存储地址空间,所述存储地址空间的大小为设备所使用的内存总容量的百分之三十至百分之七十。
进一步的,所述数据存储单元12用于:将所述崩溃内核现场数据进行压缩,将压缩后的崩溃内核现场数据写入到所述存储地址空间。
进一步的,所述数据存储单元12用于:
判断所述存储地址空间是否已填写;
若所述存储地址空间已填写,则在bootloader中根据记录的所述存储地址空间的地址信息将所述崩溃内核现场数据写入到所述存储地址空间。
上述装置可执行本发明实施例一至实施例四所提供的方法,具备执行上述方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例一至实施例四所提供的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种内核崩溃现场数据的处理方法,其特征在于,包括:
在嵌入式多媒体卡eMMC的安卓Android/data分区中预分配至少一块用于保存崩溃内核现场数据的存储地址空间,并记录所述存储地址空间的地址信息;
内核崩溃触发重启后,在bootloader中根据记录的所述存储地址空间的地址信息将所述崩溃内核现场数据写入到所述存储地址空间,所述bootloader不支持***扩展文件***;
重启时根据记录的所述存储地址空间的地址信息将所述存储地址空间的数据读取到新建的转储文件中;所述新建的转储文件为利用***扩展文件***建立的内存转储文件;
所述在嵌入式多媒体卡eMMC的安卓Android/data分区中预分配至少一块用于保存崩溃内核现场数据的存储地址空间,并记录所述存储地址空间的地址信息,包括:
在存储分区中生成一个内容为空的dummy-ramdump文件,记录所述dummy-ramdump文件的各个数据块在/data分区中对应的存储区域的地址信息;
所述重启时根据记录的所述存储地址空间的地址信息将所述存储地址空间的数据读取到新建的转储文件中,包括:
通过地址信息读出存储地址空间的数据;把所述存储地址空间的数据通过文件***读写接口写入在/data中新建的转储文件中,所述转储文件为使用Android的加密算法方式建立的。
2.根据权利要求1所述的内核崩溃现场数据的处理方法,其特征在于,所述记录所述存储地址空间的地址信息,包括:
在所述嵌入式多媒体卡eMMC的安卓Android/data分区中,预先分配一个地址索引文件,所述地址索引文件用于记录每块存储地址空间的索引信息,所述索引信息包括每个存储地址空间的地址范围;
相应的,所述在bootloader中根据记录的所述存储地址空间的地址信息所述崩溃内核现场数据写入到所述存储地址空间,包括:
在bootloader中,根据所述地址索引文件中的索引信息,将所述崩溃内核现场数据写入到相应存储地址空间;
相应的,所述重启时根据记录的所述存储地址空间的地址信息将所述存储地址空间的数据读取到新建的转储文件中,包括:
重启时,根据所述地址索引文件中的索引信息,将所述存储地址空间的数据读取到新建的转储文件中。
3.根据权利要求1所述的内核崩溃现场数据的处理方法,其特征在于,所述将所述崩溃内核现场数据写入到所述存储地址空间,包括:
将所述崩溃内核现场数据进行压缩,将压缩后的崩溃内核现场数据写入到所述存储地址空间。
4.根据权利要求3所述的内核崩溃现场数据的处理方法,其特征在于,在将所述崩溃内核现场数据写入到所述存储地址空间之前,还包括:
分配一块用于保存崩溃内核现场数据的存储地址空间,所述存储地址空间的大小为设备所使用的内存总容量的百分之三十至百分之七十。
5.根据权利要求1所述的内核崩溃现场数据的处理方法,其特征在于,所述根据记录的所述存储地址空间的地址信息将所述存储地址空间的数据读取到新建的转储文件中,还包括:
判断所述存储地址空间是否已填写;
若所述存储地址空间已填写,则根据记录的所述存储地址空间的地址信息将所述存储地址空间的数据读取到新建的转储文件中。
6.一种内核崩溃现场数据的处理装置,其特征在于,包括:
地址索引单元,用于在嵌入式多媒体卡eMMC的安卓Android/data分区中预分配至少一块用于保存崩溃内核现场数据的存储地址空间,并记录所述存储地址空间的地址信息;
数据存储单元,用于内核崩溃触发重启后,在bootloader中根据所述地址索引单元记录的所述存储地址空间的地址信息将所述崩溃内核现场数据写入到所述存储地址空间;重启时根据记录的所述存储地址空间的地址信息将所述存储地址空间的数据读取到新建的转储文件中,所述bootloader不支持***扩展文件***;所述新建的转储文件为利用***扩展文件***建立的内存转储文件;
所述地址索引单元用于,在存储分区中生成一个内容为空的dummy-ramdump文件,记录所述dummy-ramdump文件的各个数据块在/data分区中对应的存储区域的地址信息;
所述数据存储单元用于,通过地址信息读出存储地址空间的数据;把所述存储地址空间的数据通过文件***读写接口写入在/data中新建的转储文件中,所述转储文件为使用Android的加密算法方式建立的。
7.根据权利要求6所述的内核崩溃现场数据的处理装置,其特征在于,所述地址索引单元用于:
在所述嵌入式多媒体卡eMMC的安卓Android/data分区中,预先分配一个地址索引文件,所述地址索引文件用于记录每块存储地址空间的索引信息,所述索引信息包括每个存储地址空间的地址范围;
相应的,所述数据存储单元用于:
在bootloader中,根据所述地址索引文件中的索引信息,将所述崩溃内核现场数据写入到相应存储地址空间;
重启时,根据所述地址索引文件中的索引信息,将所述存储地址空间的数据读取到新建的转储文件中。
8.根据权利要求6所述的内核崩溃现场数据的处理装置,其特征在于,所述数据存储单元用于:将所述崩溃内核现场数据进行压缩,将压缩后的崩溃内核现场数据写入到所述存储地址空间。
9.根据权利要求8所述的内核崩溃现场数据的处理装置,其特征在于,所述地址索引单元用于:
分配一块用于保存崩溃内核现场数据的存储地址空间,所述存储地址空间的大小为设备所使用的内存总容量的百分之三十至百分之七十。
10.根据权利要求6所述的内核崩溃现场数据的处理装置,其特征在于,所述数据存储单元用于:
判断所述存储地址空间是否已填写;
若所述存储地址空间已填写,则在bootloader中根据记录的所述存储地址空间的地址信息将所述崩溃内核现场数据写入到所述存储地址空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611024011.9A CN108073507B (zh) | 2016-11-17 | 2016-11-17 | 一种内核崩溃现场数据的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611024011.9A CN108073507B (zh) | 2016-11-17 | 2016-11-17 | 一种内核崩溃现场数据的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108073507A CN108073507A (zh) | 2018-05-25 |
CN108073507B true CN108073507B (zh) | 2021-04-13 |
Family
ID=62160972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611024011.9A Active CN108073507B (zh) | 2016-11-17 | 2016-11-17 | 一种内核崩溃现场数据的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108073507B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189612B (zh) * | 2018-09-04 | 2020-10-16 | 广东小天才科技有限公司 | 一种Linux内核异常时的日志处理方法及电子设备 |
CN110673974A (zh) * | 2019-08-20 | 2020-01-10 | 中科创达软件股份有限公司 | ***调试方法及装置 |
CN111198777A (zh) * | 2020-01-03 | 2020-05-26 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、终端及存储介质 |
CN111240898B (zh) * | 2020-01-09 | 2023-08-15 | 中瓴智行(成都)科技有限公司 | 一种基于Hypervisor的黑匣子实现方法及*** |
CN113535660B (zh) * | 2021-07-28 | 2023-09-05 | 展讯通信(天津)有限公司 | 安卓日志存储方法和装置 |
CN113821458B (zh) * | 2021-09-18 | 2023-09-05 | 日立楼宇技术(广州)有限公司 | 一种数据操作方法、装置、计算机设备和存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719090A (zh) * | 2009-12-25 | 2010-06-02 | 珠海市君天电子科技有限公司 | 对计算机软件***崩溃原因进行自动分析的方法 |
CN103186461B (zh) * | 2011-12-30 | 2016-07-06 | 重庆重邮信科通信技术有限公司 | 一种现场数据的保存方法和恢复方法以及相关装置 |
CN103294731A (zh) * | 2012-03-05 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 实时索引建立、实时搜索方法及装置 |
CN104254840B (zh) * | 2012-04-27 | 2017-05-31 | 马维尔国际贸易有限公司 | 在计算机***中的存储器转储和分析 |
CN102929747B (zh) * | 2012-11-05 | 2015-07-01 | 中标软件有限公司 | 基于龙芯服务器的Linux操作***崩溃转储的处理方法 |
CN103226510B (zh) * | 2013-04-27 | 2015-09-30 | 华为技术有限公司 | 解析vmcore文件的方法和装置 |
US20150006962A1 (en) * | 2013-06-27 | 2015-01-01 | Robert C. Swanson | Memory dump without error containment loss |
CN105279046A (zh) * | 2015-11-04 | 2016-01-27 | 研华科技(中国)有限公司 | 一种提高嵌入式***可靠性的方法 |
-
2016
- 2016-11-17 CN CN201611024011.9A patent/CN108073507B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108073507A (zh) | 2018-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108073507B (zh) | 一种内核崩溃现场数据的处理方法及装置 | |
US10976930B2 (en) | Memory device and host device | |
US7536500B2 (en) | Header blocks for flash memory writes | |
CN108733306B (zh) | 一种文件合并方法及装置 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN114265670B (zh) | 一种内存块整理方法、介质及计算设备 | |
CN111797058B (zh) | 一种通用文件***及文件管理的方法 | |
CN114089926A (zh) | 分布式存储空间的管理方法、计算设备及存储介质 | |
CN112835528A (zh) | 脏页刷新方法和装置、电子设备和存储介质 | |
CN115482876A (zh) | 一种存储设备测试方法、装置及电子设备和存储介质 | |
US20150261454A1 (en) | Database device, computer program product and data processing method | |
US20090024810A1 (en) | Memory area management method | |
US7617374B2 (en) | Hard disk testing method under extensible firmware interface | |
CN115576818A (zh) | 一种内存越界检测方法、装置及电子设备和存储介质 | |
US11954328B2 (en) | Storage management device, storage management method, and program | |
CN111813708B (zh) | 用于存储装置的块映射***和方法 | |
CN110928779B (zh) | 文件处理方法、应用程序运行故障定位方法和设备 | |
CN103389943A (zh) | 控制装置、存储装置及存储控制方法 | |
CN109725853B (zh) | 一种数据回收方法及装置 | |
CN108959517B (zh) | 文件管理方法、装置及电子设备 | |
CN111435302A (zh) | 一种应用程序的处理方法及装置 | |
CN110737547B (zh) | 使用非易失性存储器nvm恢复内存数据库的方法和设备 | |
JP7435470B2 (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
JP6287055B2 (ja) | 情報処理装置、情報収集方法および情報収集プログラム | |
CN114564456B (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 | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20180525 Assignee: Shanghai Li Ke Semiconductor Technology Co., Ltd. Assignor: Leadcore Technology Co., Ltd. Contract record no.: 2018990000159 Denomination of invention: A kind of processing method and processing device of Kernel Panic field data License type: Common License Record date: 20180615 |
|
EE01 | Entry into force of recordation of patent licensing contract | ||
GR01 | Patent grant | ||
GR01 | Patent grant |