CN103226510B - 解析vmcore文件的方法和装置 - Google Patents
解析vmcore文件的方法和装置 Download PDFInfo
- Publication number
- CN103226510B CN103226510B CN201310152610.9A CN201310152610A CN103226510B CN 103226510 B CN103226510 B CN 103226510B CN 201310152610 A CN201310152610 A CN 201310152610A CN 103226510 B CN103226510 B CN 103226510B
- Authority
- CN
- China
- Prior art keywords
- internal storage
- storage data
- address information
- data
- file
- 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.)
- Expired - Fee Related
Links
Landscapes
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种解析vmcore文件的方法和装置。涉及通信技术领域和计算机操作系统领域。解决了通过内核符号表和gdb调试模块获取线性地址过于复杂,且返回结果可用性差,进而降低了系统的性能。本发明具体步骤可以包括:在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储;在内核崩溃时,获取进行第一次存储后的地址信息;将进行第一次存储后的地址信息进行第二次存储,并将内存数据存储至vmcore文件中;根据内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息;根据待获取内存数据的地址信息从vmcore文件中解析出待获取内存数据。可应用于解析vmcore文件中。
Description
技术领域
本发明涉及通信技术领域和计算机操作系统领域,尤其涉及解析vmcore文件的方法和装置。
背景技术
vmcore文件是内存转储机制的转储文件,内存转储机制是当内核发生错误并崩溃时,将内存中的数据存储到vmcore文件中,可以供专业人员分析错误原因甚至恢复重要信息。
Linux系统可以包括Kdump(一种内存转储机制),Kdump是一种基于kexec技术的内核转储机制,kexec是内核快速启动机制,允许通过已经运行的内核的上下文启动一个新的内核,且新启动的内核占用内存小。这样,当当前内核发生错误并崩溃时,Kdump可以快速启动一个新的内核接管系统,然后,该新内核获取并存储前一个崩溃的内核的内存数据,具体的,可以是将前一个崩溃的内核的内存数据存储至新内核的vmcore文件中。
通常的,Linux系统需要根据vmcore文件中存储的数据分析错误原因甚至恢复重要信息,这样,Linux系统首先需要获取待获取内存数据在vmcore文件中存储的线性地址,然后再根据线性地址获取从vmcore文件中获取待获取内存数据,即为对vmcore文件进行解析。
现有技术中,获取待获取内存数据可以包括:
1.获取已存储的内核符号表,该内核符号表中可以包括内存中的部分数据的线性地址,该内存中的部分数据不包括在系统运行中生成的数据;
2.从内核符号表中获取待获取内存数据的所有线性地址;
具体的,如果获取到的线性地址是一段内存数据,例如,内核符号log_buf为一段待获取内存数据的起始地址,那么读出整段待获取内存数据,并将该段数据的二进制编码转换成ASCII编码,多次使用该方法便可以获取到所有待获取内存数据的线性地址;
如果获取到的线性地址是一个数据结构或解析的数据为非连续存储的数据,则可以通过该线性地址和gdb调试模块获取数据结构各成员的值,有些成员变量的值是下一个数据结构的线性地址,可以从该数据结构成员中获得下一个数据结构的线性地址,多次使用该方法便可以获取到所有待获取内存数据的线性地址;
3、根据获取到线性地址获取待获取内容的物理地址;
4.根据物理地址对待获取内容进行解析,即根据获取到的物理地址从vmcore文件中获取待获取内存数据。
大部分待获取内存数据为系统运行时生成的数据,由于,内核符号表中不包括系统运行时生成的数据的线性地址,因此,无法通过内核符号表直接获取全部的待获取内存数据的线性地址,进而无法获取到全部的待获取内存数据,因此,还需要通过gdb调试模块获取所有待获取内存数据的线性地址。
但是,通过gdb调试模块获取线性地址过于复杂,需要多次调用gdb调试模块才可获取到所有待获取内存数据的线性地址,由于调用gdb调试模块有一定的性能消耗,因此,调用次数越多系统消耗越大;另外,gdb调试模块内部实现复杂,返回结果可用性差,进而降低了系统的性能。
发明内容
本发明的实施例提供一种解析vmcore文件的方法和装置,一定程度上解决了通过gdb调试模块获取线性地址过于复杂,且返回结果可用性差的问题,进而提高了系统的性能。
本发明的实施例采用如下技术方案:
第一方面,提供一种解析vmcore文件的方法,包括:
在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储,在内核崩溃时,进行第一次存储后的地址信息允许被获取,所述地址信息包括:内存数据的线性地址、内存数据的偏移地址以及内存数据的标识;
在内核崩溃时,获取进行第一次存储后的地址信息;
将进行第一次存储后的地址信息进行第二次存储,并将所述内存数据存储至所述vmcore文件中,在内核崩溃后,进行第二次存储后的地址信息允许被获取;
根据所述内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息,所述待获取内存数据包括待获取内存数据的标识;
根据所述待获取内存数据的地址信息从所述vmcore文件中解析出所述待获取内存数据。
在第一种可能的实现方式中,所述将进行第一次存储后的地址信息进行第二次存储包括:
将进行第一次存储后的地址信息存储至与所述vmcore文件相互独立的地址文件中;
所述根据所述内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息为:
根据所述内存数据的标识从所述地址文件中获取待获取内存数据的地址信息。
结合第一方面,所述将进行第一次存储后的地址信息进行第二次存储包括:
将所述地址信息存储至所述vmcore文件中;
所述根据所述内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息为:
根据所述内存数据的标识从所述vmcore文件中获取待获取内存数据的地址信息。
结合第一方面或第一方面的第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,在所述将获取到的内存数据的地址信息进行第一次存储之前,所述方法还包括:
从内核中获取数据结构定义信息,所述数据结构定义信息包括所述地址信息;
从所述数据结构定义信息中提取所述地址信息。
结合第一方面或第一方面的第一种可能的实现方式至第三种可能的实现方式中任意一种方式,在第四种可能的实现方式中,所述根据所述待获取内存数据的地址信息从所述vmcore文件中解析出所述待获取内存数据包括:
根据待获取内存数据的地址信息从所述vmcore文件中解析出相应的内存数据,解析出的内存数据包括内存数据的内容标识,所述内存数据的内容标识用于标识解析出的内存数据是数据内容还是指针;
根据内存数据的内容标识判断所述解析出的内存数据是数据内容还是指针;
若是数据内容,则解析出的内存数据为待获取内存数据;
若是指针,则解析所述指针对应的内存数据,直到解析出的内存数据为数据内容为止。
结合第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述内存数据的内容标识为:入参或配置文件,所述入参和配置文件用于标识内存数据是数据内容还是指针。
第二方面,提供一种解析vmcore文件的装置,包括:
第一存储单元,用于在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储,在内核崩溃时,进行第一次存储后的地址信息允许被获取,所述地址信息包括:内存数据的线性地址、内存数据的偏移地址以及内存数据的标识;
第一获取单元,用于在内核崩溃时,获取进行第一次存储后的地址信息;
第二存储单元,用于将进行第一次存储后的地址信息进行第二次存储,并将所述内存数据存储至所述vmcore文件中,在内核崩溃后,进行第二次存储后的地址信息允许被获取;
第二获取单元,用于根据所述内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息,所述待获取内存数据包括待获取内存数据的标识;
解析单元,用于根据所述待获取内存数据的地址信息从所述vmcore文件中解析出所述待获取内存数据。
在第一种可能的实现方式中,所述第二存储单元,具体用于将进行第一次存储后的地址信息存储至与所述vmcore文件相互独立的地址文件中;
第二获取单元,具体用于根据所述内存数据的标识从所述地址文件中获取待获取内存数据的地址信息。
结合第二方面,在第二种可能的实现方式中,所述第二存储单元,具体用于将所述地址信息存储至所述vmcore文件中;
第二获取单元,具体用于根据所述内存数据的标识从所述vmcore文件中获取待获取内存数据的地址信息。
结合第二方面或第二方面的第一种可能的实现方式或第二种可能的实现方式,在第三种可能的实现方式中,所述装置还包括:
第三获取单元,用于在所述将获取到的内存数据的地址信息进行第一次存储之前,从内核中获取数据结构定义信息,所述数据结构定义信息包括所述地址信息;
提取单元,用于从所述数据结构定义信息中提取所述地址信息。
结合第二方面或第二方面的第一种可能的实现方式至第三种可能的实现方式中任意一种方式,在第四种可能的实现方式中,所述解析单元,具体用于根据待获取内存数据的地址信息从所述vmcore文件中解析出相应的内存数据,解析出的内存数据包括内存数据的内容标识,所述内存数据的内容标识用于标识解析出的内存数据是数据内容还是指针;根据内存数据的内容标识判断所述解析出的内存数据是数据内容还是指针;若是数据内容,则解析出的内存数据为待获取内存数据;若是指针,则解析所述指针对应的内存数据,直到解析出的内存数据为数据内容为止。
结合第二方面的第四种可能的实现方式,在第五种可能的实现方式中,针对根据内存数据的内容标识判断所述解析出的内存数据是数据内容还是指针,所述解析单元具体用于根据入参或配置文件判断所述解析出的内存数据是数据内容还是指针,所述入参和配置文件用于标识内存数据是数据内容还是指针。
本发明实施例提供的解析vmcore文件的方法和装置,采用上述方案后,在内核崩溃前,首先将内存中的数据的地址信息进行第一次存储,在内核崩溃时,可以将进行了第一次存储的地址信息进行第二次存储,第二次存储使得在内核崩溃后可以直接获取到内存数据的地址信息。具体的,当需要从vmcore文件中获取待获取内存数据时,可以直接从进行了第二次存储的地址信息中获取待获取内存数据的地址信息,然后根据获取到的地址信息从vmcore文件中解析出待获取内存数据,避免了现有技术中通过内核符号表和gdb调试模块获取线性地址的复杂性,从而简化了获取待获取内存数据(例如非连续存储的数据)的地址信息的步骤,提高了解析效率,进而提高了系统性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术解析vmcore文件的步骤示意图;
图2为本实施例提供的一种解析vmcore文件的方法流程图;
图3为本实施例提供的另一种解析vmcore文件的方法流程图;
图4为本实施例提供的一种解析vmcore文件的装置结构示意图;
图5为本实施例提供的另一种解析vmcore文件的装置结构示意图;
图6为本实施例提供的再一种解析vmcore文件的装置结构示意图;
图7为本实施例提供的一种计算机的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了可以更清楚对下面提供的实施例以及实施例带来的有益效果进行理解,首先对现有技术中解析vmcore文件的方法进行简单描述。
vmcore文件是内存转储机制的转储文件,内存转储机制是当内核发生错误并崩溃时,将内存中的数据存储到vmcore文件中,可以供专业人员分析错误原因甚至恢复重要信息。
Kdump机制的分析工具cra sh是功能比较强大的一个,能够解析vmcore文件中很多的信息,可以但不限于包括:某个进程内核栈的信息、函数调用关系、内核日志(即内核从启动至发生崩溃时系统内核的日志)、文件系统挂载信息、模块加载信息等。对这些内容进行解析后,可以对分析定位系统崩溃原因起到了很大作用。
vmcore文件保存了内存的地址信息,但是,之前的内核已崩溃,信息由内存保存到vmcore文件中,因而无法通过Linux内核的寻址方式去访问vmcore文件中保存的文件。这种情况下,可以通过内核符号表查找地址,并使用gdb调试模块作为内部引擎文件对vmcore文件进行解析。
具体的,如图1所示,解析vmcore文件时加载包含调试信息的对应内核的镜像文件vmlinux或者被压缩过的vmlinux,从中提取内核符号表。为了加速符号查找,现有技术中,可以将读出的符号信息(即线性地址)重新建立一张更快速查找的哈希内核符号表。用符号名在哈希表中查找到对应的符号信息后,就可以获取到符号运行时的线性地址(即待获取内存数据的线性地址);然后,对线性地址进行地址转换和计算偏移等步骤得到物理地址,然后根据物理地址找到在vmcore文件中对应的位置,就可以读出该物理地址处存储的数据。
目前技术能够在获得一个具体物理地址后解析该物理地址处连续内存的内容。如果获取到的线性地址是一段内存数据,例如,内核符号log_buf为一段待获取内存数据的起始地址,那么读出整段待获取内存数据,并将该段数据的二进制编码转换成ASCII编码,多次使用该方法便可以获取到所有待获取内存数据的线性地址;
如果获取到的线性地址是一个数据结构或解析的数据为非连续存储的数据,则可以通过该线性地址和gdb调试模块获取物理地址,gdb调试模块主要用于根据获取到的线性地址获取到该段所有待获取内存数据的线性地址,多次使用该方法便可以获取到所有待获取内存数据的线性地址。例如,得知某个地址及该地址的数据结构类型,调用gdb调试模块解析出数据结构中各个成员字段的值;
gdb调试模块内部实现流程可以包括:先去vmlinux找到数据结构的定义信息(vmlinux中存储有所有数据(包括所有形式的数据,例如,数据结构等)的数据定义,其中,数据定义可以但不限于包括:数据的大小、数据的起始地址、数据的偏移地址等),根据数据结构的定义获得数据结构中每个成员变量的名字和相对偏移量(可以为偏移地址),这样便可以获取到数据结构中所有成员的线性地址。
大部分待获取内存数据为系统运行时生成的数据,由于,内核符号表中不包括系统运行时生成的数据的线性地址,因此,无法通过内核符号表直接获取全部的待获取内存数据的线性地址,进而无法获取到全部的待获取内存数据,因此,还需要通过gdb调试模块获取所有待获取内存数据的线性地址。
但是,通过gdb调试模块获取线性地址过于复杂,需要多次调用gdb调试模块才可获取到所有待获取内存数据的线性地址,由于调用gdb调试模块有一定的性能消耗,因此,调用次数越多系统消耗越大;另外,gdb调试模块内部实现复杂,返回结果可用性差,进而降低了系统的性能。
为了解决上述问题,本实施例提供一种解析vmcore文件的方法,该方法的执行主体可以为包含有可执行本实施例提供的方案的程序或模块等的任意计算机,如图2所示,可以包括如下步骤:
201、在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储,在内核崩溃时,进行第一次存储后的地址信息允许被获取,地址信息包括:内存数据的线性地址、内存数据的偏移地址以及内存数据的标识;
202、在内核崩溃时,获取进行第一次存储后的地址信息;
203、将进行第一次存储后的地址信息进行第二次存储,并将内存数据存储至vmcore文件中,在内核崩溃后,进行第二次存储后的地址信息允许被获取;
204、根据内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息,待获取内存数据包括待获取内存数据的标识;
205、根据待获取内存数据的地址信息从vmcore文件中解析出待获取内存数据。
采用上述方案后,在内核崩溃前,首先将内存中的数据的地址信息进行第一次存储,在内核崩溃时,可以将进行了第一次存储的地址信息进行第二次存储,第二次存储使得在内核崩溃后可以直接获取到内存数据的地址信息。具体的,当需要从vmcore文件中获取待获取内存数据时,可以直接从进行了第二次存储的地址信息中获取待获取内存数据的地址信息,然后根据获取到的地址信息从vmcore文件中解析出待获取内存数据,避免了现有技术中通过内核符号表和gdb调试模块获取线性地址的复杂性,从而简化了获取待获取内存数据(例如非连续存储的数据)的地址信息的步骤,提高了解析效率,进而提高了系统性能。
本实施例提供另一种解析vmcore文件的方法,该方法是对图2所示的方法的进一步扩展,如图3所示,可以包括如下步骤:
301、从内核中获取数据结构定义信息。
vmcore文件是内存转储文件,在内核崩溃后,虽然无法利用计算机CPU(Central Processing Unit,中央处理器)的寻址机制功能自动对vmcore文件进行寻址,但是线性地址关系仍然存在,仍然可以通过线性地址将vmcore文件中内存数据进行解析。
为了解决现有技术中在内核崩溃后,通过内核符号表和gdb调试模块解析待获取内存数据的步骤较繁琐,导致系统性能下降的问题,本实施例提供的方案可以是在内核崩溃前,首先将获取到的内存数据的地址信息进行第一次存储,以便内核崩溃后,获取到内存数据的地址信息。
作为本实施例的一种实施方式,内核中可以但不限于存储有内存数据的数据结构定义信息,数据结构定义信息可以但不限于包括:内存数据的线性地址、内存数据的偏移地址、内存数据的标识等。
内存数据的地址信息可以但不限于包括:内存数据的线性地址、内存数据的偏移地址、内存数据的标识。
由此可以看出,数据结构定义信息可以包括地址信息。
为了可以在内核崩溃前将地址信息进行第一次存储,可以首先从内核中获取数据结构定义信息,以便进一步通过数据结构定义信息获取到地址信息。
302、从数据结构定义信息中提取地址信息。
为了可以在内核崩溃前将地址信息进行第一次存储,则可以从数据结构定义信息中提取地址信息,该地址信息为内存数据的地址信息。
本实施例对从数据结构定义信息中提取地址信息的方法不作限定,为本领域技术人员熟知的技术,且可以根据实际需要进行设定,在此不再赘述。
303、在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储。
进一步的,在内核崩溃时,进行第一次存储后的地址信息允许被获取。
作为本实施例的一种实施方式,在内核崩溃前,可以但不限于将获取到的地址信息存储至硬盘上的文件中。
如图6所示,内存中的数据可能是一段一段的,转储到vmcore文件中也是整段整段的保存,vmocre文件的开头处会记录各个段的起始地址和长度,利用这些信息可以实现间接寻址。
作为本实施例的一种实施方式,可以依次存储与内存数据的标识对应的地址信息,且存储后的地址信息中包括内存数据的标识,这样,便于在内核崩溃后,根据待获取内存数据的标识获取到相应的地址信息。
本实施例对存储地址信息的方式和顺序不作限定,可以根据实际需要进行设定,在此不再赘述。
作为本实施例的一种实施方式,如图6所示,计算机中对vmcore文件进行解析的核心部件可以包括两个模块:地址解析模块、和内容解析模块。
在地址解析模块可以首先确定待获取的vmcore文件中内存数据(也可以理解为内存数据段);然后根据待获取内存数据的标识从进行了第二次存储的地址信息中获取待获取内存数据的地址信息;之后,可以地址信息得到相应的内存数据的线性地址;将线性地址转换为物理地址;根据物理地址定位到vmocre文件中具体的读写位置并读出相应数据(即为待获取内存数据或内存数据段),原理与内存的寻址类似。
内容解析模块主要完成对vmocre文件中指定物理地址处的数据的解析。地址解析模块根据物理地址定位到某个待获取内存数据在vmcore文件中的位置,并解析出该位置的数据。
304、在内核崩溃时,获取进行第一次存储后的地址信息。
305、将进行第一次存储后的地址信息进行第二次存储,并将内存数据存储至vmcore文件中。
进一步的,在内核崩溃后,进行第二次存储后的地址信息允许被获取。
作为本实施例的一种实施方式,在内核崩溃后可以直接从第二次存储的地址信息中获取内核崩溃前存储的内存数据的地址信息,并可以根据该地址信息对待获取内存数据进行解析。
作为本实施例的一种实施方式,可以将进行第一次存储后的地址信息存储至与vmcore文件相互独立的地址文件中。
在此场景下,地址信息与内存数据是存储在不同文件中的,即地址信息存储在地址文件中,内存数据则是存储在vmcore文件中,地址文件与vmcore文件为两个相互独立的文件。
作为本实施例的另一种实施方式,还可以将进行第一次存储后的地址信息存储至vmcore文件中。
将地址信息存储至vmcore文件中,不会因为增加了内容而导致vmcore文件大小无限制增加,这样,既可以提高解析vmcore文件效率、降低性能,又可以控制vmcore文件的大小。
在此场景下,地址信息与内存数据均是存储在vmcore文件中的。
作为本实施例的一种实施方式,将地址信息与内存数据分别存储于相互独立的地址文件中,可以避免由于存储地址信息而导致vmcore文件的大小增加的问题;将地址信息与内存数据均存储于vmcore文件中,则不需要额外创建文件,同时,在解析vmcore文件中的内存数据时,可以从vmcore文件中获取待获取内存数据的地址信息,并根据获取到的地址信息对vmcore文件中的待获取内存数据进行解析,简化了解析待获取内存数据的步骤。
作为本实施例的一种实施方式,在将地址信息存储在vmcore文件之前,还需要修改Kdump调用的makedumpfile转储脚本,以便修改后可以将地址信息存储在vmcore文件中。
具体的,编写linux内核模块,调用linux内核KPI(Kernel ProgrammingInterface,内核编程接口)获得关键数据结构在内核的地址信息,将信息记录到文件中,保存在硬件设备上。当系统崩溃时,Kdump会调用makedumpfile转储脚本,生成vmcore文件。修改原来的makedumpfile脚本,在写入文件头信息后,写入保存在硬件设备上的地址信息,写入格式符合vmcore遵循的elf(Executable and Linkable Format,可执行连接格式)。
作为本实施例的一种实施方式,可以首先判断进行第一次存储的地址信息的格式是否为elf,若是,则直接将该地址信息进行第二次存储,若不是,则将进行第一次存储的地址信息的格式转换为elf,然后将进行格式转换后的地址信息进行第二次存储。这样,使得在内核崩溃后,存储的地址信息的格式与vmcore文件中的信息的格式相同(即均为elf),避免了在对vmcore文件中的内存数据进行解析时的格式转换的步骤。
本实施例对在内核崩溃后存储地址信息的方法不作限定,可以根据实际需要进行设定,在此不再赘述。
306、根据内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息。
进一步的,待获取内存数据包括待获取内存数据的标识。
作为本实施例的一种实施方式,若步骤305是将地址信息存储至地址文件且内存数据存储至与vmcore文件相独立的地址文件中,则根据内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息为:根据内存数据的标识从地址文件中获取待获取内存数据的地址信息;
若步骤305是将地址信息与内存数据均存储至vmcore文件中,则根据内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息为:根据内存数据的标识从vmcore文件中获取待获取内存数据的地址信息。
307、根据待获取内存数据的地址信息从vmcore文件中解析出待获取内存数据。
作为本实施例的一种实施方式,在计算机对待获取内存数据进行解析前,首先可能还需要将地址信息中的线性地址转换为物理地址,然后根据物理地址对待获取内存数据进行解析。
本实施例对根据待获取内存数据的地址信息从vmcore文件中解析出待获取内存数据的方法,以及计算机将线性地址转换为物理地址的方法不作限定,为本领域技术人员熟知的技术,且可以根据实际需要进行设定,在此不再赘述。
308、根据内存数据的内容标识判断解析出的内存数据是数据内容还是指针。若是指针,则执行步骤309,若是数据内容,则解析出的内存数据为待获取内存数据,然后执行步骤306,直到解析出所有待获取内容为止。
进一步的,解析出的内存数据包括内存数据的内容标识,内存数据的内容标识用于标识解析出的内存数据是数据内容还是指针。
作为本实施例的一种实施方式,根据地址信息解析出的数据可能是数据内容,也可能是指针,内容解析模块无法自动识别该数据是数据内容还是指针,因此需要根据内存数据的内容标识进行确定。
进一步的,内存数据的内容标识可以但不限于为:入参或配置文件等,入参和配置文件用于标识内存数据是数据内容还是指针,这里的入参可以理解为输入参数。
本实施例对指定数据是数据内容还是指针的方法不作限定,可以根据实际需要进行设定,在此不再赘述。
309、解析指针对应的内存数据,直到解析出的内存数据为数据内容为止。
执行步骤306。
采用上述方案后,在内核崩溃前,首先将内存中的数据的地址信息进行第一次存储,在内核崩溃时,可以将进行了第一次存储的地址信息进行第二次存储,第二次存储使得在内核崩溃后可以直接获取到内存数据的地址信息。具体的,当需要从vmcore文件中获取待获取内存数据时,可以直接从进行了第二次存储的地址信息中获取待获取内存数据的地址信息,然后根据获取到的地址信息从vmcore文件中解析出待获取内存数据,避免了现有技术中通过内核符号表和gdb调试模块获取线性地址的复杂性,从而简化了获取待获取内存数据(例如非连续存储的数据)的地址信息的步骤,提高了解析效率,进而提高了系统性能;
另外,可以将进行了第一次存储的地址信息存储至vmcore文件中或存储至与vmcore文件相独立的地址文件中,这样,可以根据实际情况对地址信息进行第二次存储,避免了由于对地址信息进行第二次存储而导致vmcore文件的大小增加的问题。
下面提供一些虚拟装置实施例,该虚拟装置实施例分别于上述提供的相应方法实施例相对应。
本实施例提供一种解析vmcore文件的装置,如图4所示,可以包括:
第一存储单元41,用于在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储,在内核崩溃时,进行第一次存储后的地址信息允许被获取,地址信息包括:内存数据的线性地址、内存数据的偏移地址以及内存数据的标识;
第一获取单元42,用于在内核崩溃时,获取进行第一次存储后的地址信息;
第二存储单元43,用于将进行第一次存储后的地址信息进行第二次存储,并将内存数据存储至vmcore文件中,在内核崩溃后,进行第二次存储后的地址信息允许被获取;
第二获取单元44,用于根据内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息,待获取内存数据包括待获取内存数据的标识;
解析单元45,用于根据待获取内存数据的地址信息从vmcore文件中解析出待获取内存数据。
采用上述方案后,在内核崩溃前,第一存储单元首先将内存中的数据的地址信息进行第一次存储,在内核崩溃时,第二存储单元可以将进行了第一次存储的地址信息进行第二次存储,第二次存储使得在内核崩溃后,第二获取单元可以直接获取到内存数据的地址信息。具体的,当解析单元需要从vmcore文件中获取待获取内存数据时,可以直接从进行了第二次存储的地址信息中获取待获取内存数据的地址信息,然后根据获取到的地址信息从vmcore文件中解析出待获取内存数据,避免了现有技术中通过内核符号表和gdb调试模块获取线性地址的复杂性,从而简化了获取待获取内存数据(例如非连续存储的数据)的地址信息的步骤,提高了解析效率,进而提高了系统性能。
本实施例提供另一种解析vmcore文件的装置,该装置是对图4所示的装置的进一步扩展,如图5所示,可以包括:
第一存储单元51,用于在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储,在内核崩溃时,进行第一次存储后的地址信息允许被获取,地址信息包括:内存数据的线性地址、内存数据的偏移地址以及内存数据的标识;
第一获取单元52,用于在内核崩溃时,获取进行第一次存储后的地址信息;
第二存储单元53,用于将进行第一次存储后的地址信息进行第二次存储,并将内存数据存储至vmcore文件中,在内核崩溃后,进行第二次存储后的地址信息允许被获取;
第二获取单元54,用于根据内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息,待获取内存数据包括待获取内存数据的标识;
解析单元55,用于根据待获取内存数据的地址信息从vmcore文件中解析出待获取内存数据。
进一步的,第二存储单元53,具体用于将进行第一次存储后的地址信息存储至与vmcore文件相互独立的地址文件中;
第二获取单元52,具体用于根据内存数据的标识从地址文件中获取待获取内存数据的地址信息。
进一步的,第二存储单元53,具体用于将地址信息存储至vmcore文件中;
第二获取单元54,具体用于根据内存数据的标识从vmcore文件中获取待获取内存数据的地址信息。
进一步的,本实施例提供的解析vmcore文件的装置还可以包括:
第三获取单元56,用于在将获取到的内存数据的地址信息进行第一次存储之前,从内核中获取数据结构定义信息,数据结构定义信息包括地址信息;
提取单元57,用于从数据结构定义信息中提取地址信息。
进一步的,解析单元55,具体用于根据待获取内存数据的地址信息从vmcore文件中解析出相应的内存数据,解析出的内存数据包括内存数据的内容标识,内存数据的内容标识用于标识解析出的内存数据是数据内容还是指针;根据内存数据的内容标识判断解析出的内存数据是数据内容还是指针;若是数据内容,则解析出的内存数据为待获取内存数据;若是指针,则解析指针对应的内存数据,直到解析出的内存数据为数据内容为止。
进一步的,针对根据内存数据的内容标识判断所述解析出的内存数据是数据内容还是指针,解析单元55具体用于根据入参或配置文件判断所述解析出的内存数据是数据内容还是指针,所述入参和配置文件用于标识内存数据是数据内容还是指针。
需要说明的是,在实际应用中,本发明实施例中,应当理解的是,在一种实现方式下,解析vmcore文件的装置可以为独立的计算机,该计算机中可以设置有可以实行上述方法实施例中提供的方法的程序或模块等;在另一种实现方式下,解析vmcore文件的装置也可以为其他任意可对源程序进行编译链接的设备,本发明对此不做限制。
如图6所示,作为本实施例的一种实施方式,本实施例中的第一存储单元51、第一获取单元52、第二存储单元53、第二获取单元54可以设置于图6提供的地址解析模块61中,解析模块55可以包含于图6提供的内容解析模块62中。
具体的,地址解析模块61,用于在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储,在内核崩溃时,进行第一次存储后的地址信息允许被获取,地址信息包括:内存数据的线性地址、内存数据的偏移地址以及内存数据的标识;在内核崩溃时,获取进行第一次存储后的地址信息;将进行第一次存储后的地址信息进行第二次存储,并将内存数据存储至vmcore文件中,在内核崩溃后,进行第二次存储后的地址信息允许被获取;根据内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息,待获取内存数据包括待获取内存数据的标识;
内容解析模块62,用于根据地址解析模块61获取到的待获取内存数据的地址信息从vmcore文件中解析出待获取内存数据。
进一步的,地址解析模块61,具体用于将进行第一次存储后的地址信息存储至与vmcore文件相互独立的地址文件中;根据内存数据的标识从地址文件中获取待获取内存数据的地址信息。
进一步的,地址解析模块61,具体用于将地址信息存储至vmcore文件中;根据内存数据的标识从vmcore文件中获取待获取内存数据的地址信息。
进一步的,地址解析模块61,还用于在将获取到的内存数据的地址信息进行第一次存储之前,从内核中获取数据结构定义信息,数据结构定义信息包括地址信息;从数据结构定义信息中提取地址信息。
进一步的,内容解析模块62,具体用于根据待获取内存数据的地址信息从vmcore文件中解析出相应的内存数据,解析出的内存数据包括内存数据的内容标识,内存数据的内容标识用于标识解析出的内存数据是数据内容还是指针;根据内存数据的内容标识判断解析出的内存数据是数据内容还是指针;若是数据内容,则解析出的内存数据为待获取内存数据;若是指针,则解析指针对应的内存数据,直到解析出的内存数据为数据内容为止。
进一步的,地址解析模块61、具体用于根据入参或配置文件判断解析出的内存数据是数据内容还是指针,入参和配置文件用于标识内存数据是数据内容还是指针。
采用上述方案后,在内核崩溃前,第一存储单元首先将内存中的数据的地址信息进行第一次存储,在内核崩溃时,第二存储单元可以将进行了第一次存储的地址信息进行第二次存储,第二次存储使得在内核崩溃后,第二获取单元可以直接获取到内存数据的地址信息。具体的,当解析单元需要从vmcore文件中获取待获取内存数据时,可以直接从进行了第二次存储的地址信息中获取待获取内存数据的地址信息,然后根据获取到的地址信息从vmcore文件中解析出待获取内存数据,避免了现有技术中通过内核符号表和gdb调试模块获取线性地址的复杂性,从而简化了获取待获取内存数据(例如非连续存储的数据)的地址信息的步骤,提高了解析效率,进而提高了系统性能;另外,可以将进行了第一次存储的地址信息存储至vmcore文件中或存储至与vmcore文件相独立的地址文件中,这样,可以根据实际情况对地址信息进行第二次存储,避免了由于对地址信息进行第二次存储而导致vmcore文件的大小增加的问题。
下面还提供一种与上述方法对应的实体装置的实施例。
如图7所示,本发明实施例提供一种计算机1,该计算机1包括:至少一个处理器15,例如CPU,至少一个输出接口16或者其他用户接口17,存储器18,至少一个通信总线19。通信总线19用于实现这些组件之间的连接通信。该计算机1可选的包含其他用户接口17,包括显示器,键盘或者点击设备(例如,鼠标,轨迹球(trackball),触感板或者触感显示屏)。存储器18可能包含高速RAM(Random Access Memory,随机存取存储器),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器18可选的可以包含至少一个位于远离前述处理器15的存储装置。
在一些实施方式中,存储器18存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统180,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
应用程序181,包含各种应用程序,用于实现各种应用业务。
应用程序181中可以但不限于包括:
第一存储单元,用于在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储,在内核崩溃时,进行第一次存储后的地址信息允许被获取,地址信息包括:内存数据的线性地址、内存数据的偏移地址以及内存数据的标识;
第一获取单元,用于在内核崩溃时,获取进行第一次存储后的地址信息;
第二存储单元,用于将进行第一次存储后的地址信息进行第二次存储,并将内存数据存储至vmcore文件中,在内核崩溃后,进行第二次存储后的地址信息允许被获取;
第二获取单元,用于根据内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息,待获取内存数据包括待获取内存数据的标识;
解析单元,用于根据待获取内存数据的地址信息从vmcore文件中解析出待获取内存数据。
进一步的,第二存储单元,具体用于将进行第一次存储后的地址信息存储至与vmcore文件相互独立的地址文件中;
第二获取单元,具体用于根据内存数据的标识从地址文件中获取待获取内存数据的地址信息。
进一步的,第二存储单元,具体用于将地址信息存储至vmcore文件中;
第二获取单元,具体用于根据内存数据的标识从vmcore文件中获取待获取内存数据的地址信息。
进一步的,应用程序181还可以包括:
第三获取单元,用于在将获取到的内存数据的地址信息进行第一次存储之前,从内核中获取数据结构定义信息,数据结构定义信息包括地址信息;
提取单元,用于从数据结构定义信息中提取地址信息。
进一步的,解析单元,具体用于根据待获取内存数据的地址信息从vmcore文件中解析出相应的内存数据,解析出的内存数据包括内存数据的内容标识,内存数据的内容标识用于标识解析出的内存数据是数据内容还是指针;根据内存数据的内容标识判断解析出的内存数据是数据内容还是指针;若是数据内容,则解析出的内存数据为待获取内存数据;若是指针,则解析指针对应的内存数据,直到解析出的内存数据为数据内容为止。
进一步的,针对根据内存数据的内容标识判断所述解析出的内存数据是数据内容还是指针,解析单元具体用于根据入参或配置文件判断解析出的内存数据是数据内容还是指针,入参和配置文件用于标识内存数据是数据内容还是指针。
应用程序181中各模块的具体实现参见图6所示实施例中的相应模块,在此不再赘述。
在本发明实施例中,通过调用存储器18中存储的程序或指令,处理器15用于:
在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储,在内核崩溃时,进行第一次存储后的地址信息允许被获取,地址信息包括:内存数据的线性地址、内存数据的偏移地址以及内存数据的标识;
在内核崩溃时,获取进行第一次存储后的地址信息;
将进行第一次存储后的地址信息进行第二次存储,并将内存数据存储至vmcore文件中,在内核崩溃后,进行第二次存储后的地址信息允许被获取;
根据内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息,待获取内存数据包括待获取内存数据的标识;
根据待获取内存数据的地址信息从vmcore文件中解析出待获取内存数据。
进一步地,处理器15,具体用于将进行第一次存储后的地址信息存储至与vmcore文件相互独立的地址文件中;根据内存数据的标识从地址文件中获取待获取内存数据的地址信息。
进一步的,处理器15,具体用于将地址信息存储至vmcore文件中;根据内存数据的标识从vmcore文件中获取待获取内存数据的地址信息。
进一步的,处理器15,具体用于在将获取到的内存数据的地址信息进行第一次存储之前,从内核中获取数据结构定义信息,数据结构定义信息包括地址信息;
从数据结构定义信息中提取地址信息。
进一步的,处理器15,具体用于根据待获取内存数据的地址信息从vmcore文件中解析出相应的内存数据,解析出的内存数据包括内存数据的内容标识,内存数据的内容标识用于标识解析出的内存数据是数据内容还是指针;
根据内存数据的内容标识判断解析出的内存数据是数据内容还是指针;
若是数据内容,则解析出的内存数据为待获取内存数据;
若是指针,则解析指针对应的内存数据,直到解析出的内存数据为数据内容为止。
进一步的,内存数据的内容标识为:入参或配置文件,入参和配置文件用于标识内存数据是数据内容还是指针。
可见,采用上述方案后,在内核崩溃前,首先将内存中的数据的地址信息进行第一次存储,在内核崩溃时,可以将进行了第一次存储的地址信息进行第二次存储,第二次存储使得在内核崩溃后可以直接获取到内存数据的地址信息。具体的,当需要从vmcore文件中获取待获取内存数据时,可以直接从进行了第二次存储的地址信息中获取待获取内存数据的地址信息,然后根据获取到的地址信息从vmcore文件中解析出待获取内存数据,避免了现有技术中通过内核符号表和gdb调试模块获取线性地址的复杂性,从而简化了获取待获取内存数据(例如非连续存储的数据)的地址信息的步骤,提高了解析效率,进而提高了系统性能;
另外,可以将进行了第一次存储的地址信息存储至vmcore文件中或存储至与vmcore文件相独立的地址文件中,这样,可以根据实际情况对地址信息进行第二次存储,避免了由于对地址信息进行第二次存储而导致vmcore文件的大小增加的问题。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (12)
1.一种解析虚拟内存转储vmcore文件的方法,其特征在于,包括:
在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储,在内核崩溃时,进行第一次存储后的地址信息允许被获取,所述地址信息包括:内存数据的线性地址、内存数据的偏移地址以及内存数据的标识;
在内核崩溃时,获取进行第一次存储后的地址信息;
将进行第一次存储后的地址信息进行第二次存储,并将所述内存数据存储至所述vmcore文件中,在内核崩溃后,进行第二次存储后的地址信息允许被获取;
根据所述内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息,所述待获取内存数据包括待获取内存数据的标识;
根据所述待获取内存数据的地址信息从所述vmcore文件中解析出所述待获取内存数据。
2.根据权利要求1所述的方法,其特征在于,所述将进行第一次存储后的地址信息进行第二次存储包括:
将进行第一次存储后的地址信息存储至与所述vmcore文件相互独立的地址文件中;
所述根据所述内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息为:
根据所述内存数据的标识从所述地址文件中获取待获取内存数据的地址信息。
3.根据权利要求1所述的方法,其特征在于,所述将进行第一次存储后的地址信息进行第二次存储包括:
将所述地址信息存储至所述vmcore文件中;
所述根据所述内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息为:
根据所述内存数据的标识从所述vmcore文件中获取待获取内存数据的地址信息。
4.根据权利要求1至3中任意一项所述的方法,其特征在于,在所述将获取到的内存数据的地址信息进行第一次存储之前,所述方法还包括:
从内核中获取数据结构定义信息,所述数据结构定义信息包括所述地址信息;
从所述数据结构定义信息中提取所述地址信息。
5.根据权利要求1至3中任意一项所述的方法,其特征在于,所述根据所述待获取内存数据的地址信息从所述vmcore文件中解析出所述待获取内存数据包括:
根据待获取内存数据的地址信息从所述vmcore文件中解析出相应的内存数据,解析出的内存数据包括内存数据的内容标识,所述内存数据的内容标识用于标识解析出的内存数据是数据内容还是指针;
根据内存数据的内容标识判断所述解析出的内存数据是数据内容还是指针;
若是数据内容,则解析出的内存数据为待获取内存数据;
若是指针,则解析所述指针对应的内存数据,直到解析出的内存数据为数据内容为止。
6.根据权利要求5所述的方法,其特征在于,所述内存数据的内容标识为:入参或配置文件,所述入参和配置文件用于标识内存数据是数据内容还是指针。
7.一种解析vmcore文件的装置,其特征在于,包括:
第一存储单元,用于在内核崩溃前,将获取到的内存数据的地址信息进行第一次存储,在内核崩溃时,进行第一次存储后的地址信息允许被获取,所述地址信息包括:内存数据的线性地址、内存数据的偏移地址以及内存数据的标识;
第一获取单元,用于在内核崩溃时,获取进行第一次存储后的地址信息;
第二存储单元,用于将进行第一次存储后的地址信息进行第二次存储,并将所述内存数据存储至所述vmcore文件中,在内核崩溃后,进行第二次存储后的地址信息允许被获取;
第二获取单元,用于根据所述内存数据的标识从进行第二次存储后的地址信息中获取待获取内存数据的地址信息,所述待获取内存数据包括待获取内存数据的标识;
解析单元,用于根据所述待获取内存数据的地址信息从所述vmcore文件中解析出所述待获取内存数据。
8.根据权利要求7所述的装置,其特征在于,所述第二存储单元,具体用于将进行第一次存储后的地址信息存储至与所述vmcore文件相互独立的地址文件中;
第二获取单元,具体用于根据所述内存数据的标识从所述地址文件中获取待获取内存数据的地址信息。
9.根据权利要求7所述的装置,其特征在于,所述第二存储单元,具体用于将所述地址信息存储至所述vmcore文件中;
第二获取单元,具体用于根据所述内存数据的标识从所述vmcore文件中获取待获取内存数据的地址信息。
10.根据权利要求7至9中任意一项所述的装置,其特征在于,所述装置还包括:
第三获取单元,用于在所述将获取到的内存数据的地址信息进行第一次存储之前,从内核中获取数据结构定义信息,所述数据结构定义信息包括所述地址信息;
提取单元,用于从所述数据结构定义信息中提取所述地址信息。
11.根据权利要求7至9中任意一项所述的装置,其特征在于,所述解析单元,具体用于根据待获取内存数据的地址信息从所述vmcore文件中解析出相应的内存数据,解析出的内存数据包括内存数据的内容标识,所述内存数据的内容标识用于标识解析出的内存数据是数据内容还是指针;根据所述内存数据的内容标识判断所述解析出的内存数据是数据内容还是指针;若是数据内容,则解析出的内存数据为待获取内存数据;若是指针,则解析所述指针对应的内存数据,直到解析出的内存数据为数据内容为止。
12.根据权利要求11所述的装置,其特征在于,针对根据内存数据的内容标识判断所述解析出的内存数据是数据内容还是指针,所述解析单元具体用于根据入参或配置文件判断所述解析出的内存数据是数据内容还是指针,所述入参和配置文件用于标识内存数据是数据内容还是指针。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310152610.9A CN103226510B (zh) | 2013-04-27 | 2013-04-27 | 解析vmcore文件的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310152610.9A CN103226510B (zh) | 2013-04-27 | 2013-04-27 | 解析vmcore文件的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103226510A CN103226510A (zh) | 2013-07-31 |
CN103226510B true CN103226510B (zh) | 2015-09-30 |
Family
ID=48836969
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310152610.9A Expired - Fee Related CN103226510B (zh) | 2013-04-27 | 2013-04-27 | 解析vmcore文件的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103226510B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293499B (zh) * | 2015-06-12 | 2019-08-27 | 联想(北京)有限公司 | 一种文件获取方法及基板管理控制器、基本输入输出系统 |
CN105426293A (zh) * | 2015-10-29 | 2016-03-23 | 汉柏科技有限公司 | 记录内核异常栈及vmcore文件的方法及系统 |
CN106997315B (zh) * | 2016-01-25 | 2021-01-26 | 阿里巴巴集团控股有限公司 | 一种用于虚拟机的内存转储的方法和装置 |
CN107608809B (zh) * | 2016-07-11 | 2023-09-29 | 中兴通讯股份有限公司 | 异常处理方法及装置 |
CN106339285A (zh) * | 2016-08-19 | 2017-01-18 | 浪潮电子信息产业股份有限公司 | 一种linux系统意外重启的分析方法 |
CN108073507B (zh) * | 2016-11-17 | 2021-04-13 | 联芯科技有限公司 | 一种内核崩溃现场数据的处理方法及装置 |
CN110673974A (zh) * | 2019-08-20 | 2020-01-10 | 中科创达软件股份有限公司 | 系统调试方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7237081B2 (en) * | 2002-01-16 | 2007-06-26 | Texas Instruments Incorporated | Secure mode for processors supporting interrupts |
CN101719090A (zh) * | 2009-12-25 | 2010-06-02 | 珠海市君天电子科技有限公司 | 对计算机软件系统崩溃原因进行自动分析的方法 |
CN102929747A (zh) * | 2012-11-05 | 2013-02-13 | 中标软件有限公司 | 基于龙芯服务器的Linux操作系统崩溃转储的处理方法 |
-
2013
- 2013-04-27 CN CN201310152610.9A patent/CN103226510B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7237081B2 (en) * | 2002-01-16 | 2007-06-26 | Texas Instruments Incorporated | Secure mode for processors supporting interrupts |
CN101719090A (zh) * | 2009-12-25 | 2010-06-02 | 珠海市君天电子科技有限公司 | 对计算机软件系统崩溃原因进行自动分析的方法 |
CN102929747A (zh) * | 2012-11-05 | 2013-02-13 | 中标软件有限公司 | 基于龙芯服务器的Linux操作系统崩溃转储的处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103226510A (zh) | 2013-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103226510B (zh) | 解析vmcore文件的方法和装置 | |
CN108932122B (zh) | 接口文档生成方法、装置、计算机设备和存储介质 | |
US8434057B2 (en) | Optimized implementation of breakpoint in java debugger agent | |
US9400733B2 (en) | Pattern matching framework for log analysis | |
CN108108342B (zh) | 结构化文本的生成方法、检索方法及装置 | |
US8134553B2 (en) | Rendering three-dimensional objects on a server computer | |
CN106648569B (zh) | 目标序列化实现方法和装置 | |
US20150089415A1 (en) | Method of processing big data, apparatus performing the same and storage media storing the same | |
US20080052619A1 (en) | Spell Checking Documents with Marked Data Blocks | |
CN111290996A (zh) | 文档格式转换方法、装置、设备及可读存储介质 | |
CN113051514A (zh) | 元素的定位方法、装置、电子设备及存储介质 | |
CN108132783A (zh) | 一种Web App的配置方法及装置 | |
CN116339818B (zh) | 代码变更类型的筛选方法、电子设备及可读存储介质 | |
US20180330156A1 (en) | Detection of caption elements in documents | |
CN113296752A (zh) | 生成api文档的方法、系统、设备及存储介质 | |
CN111026604B (zh) | 一种日志文件解析方法及装置 | |
CN102799423A (zh) | Jsf中执行动态方法的方法及装置 | |
CN109344083B (zh) | 一种程序调试方法、装置、设备及可读存储介质 | |
US8442980B2 (en) | Attribute change coalescing in order to deal with component moves on a page | |
CN110515653B (zh) | 文档生成方法、装置、电子设备及计算机可读存储介质 | |
CN103870543A (zh) | 一种用于文档文件重构的方法及装置 | |
CN101553800B (zh) | 将主机系统sam/vsam文件转换为开放系统sam/vsam文件的转换装置和方法 | |
CN113672685A (zh) | 信息处理方法、设备、介质 | |
CN113254347A (zh) | 一种日志函数添加方法、计算设备及储存介质 | |
CN112748930A (zh) | 编译检测方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150930 Termination date: 20180427 |
|
CF01 | Termination of patent right due to non-payment of annual fee |