专利名称:一种系统死机的处理方法、装置及设备的制作方法
技术领域:
本发明涉及网络通信领域,尤其涉及一种系统死机的处理方法、装置及设备。
背景技术:
目前的嵌入式系统或计算机系统,在遇到比较严重的故障时,会出现死机现象,这种死机可以是主动死机,即设备运行过程中发现有错误了,主动运行死机程序,也可以被动死机,即设备运行过程中由于出现了错误,系统运行不下去了,直接抛出了死机。现有技术中,对于死机异常的处理一种方式是采用死机后系统直接重启的方式, 系统重启之后原本内存中信息将重新被刷新掉,所以故障之前的现场信息将被丢失,不利于故障的定位。或者采用预先定义需要备份的内存信息,在系统死机后,备份相关信息后再重启的方式,但由于所记录的相关信息相对比较固定,具有一定的局限性,而引起死机的故障原因比较复杂,对于一些比较隐蔽的、难以定位的故障原因,则无法从备份的相关信息中定位。
发明内容
本发明实施例提供的一种系统死机的处理方法、装置及设备,用以解决现有系统死机的处理方式无法有效地定位故障的问题。本发明实施例提供的一种系统死机的处理方法,包括在系统死机后,控制系统进入驻留模式;所述驻留模式为系统不重启且保留死机时内存中所有信息的模式;在系统进入驻留模式后,根据用户输入的内存导出命令,导出内存中的信息;分析所导出的内存中的信息,对系统死机的故障进行定位。本发明实施例提供的一种处理系统死机的装置,包括控制模块,用于在系统死机后,控制系统进入驻留模式;所述驻留模式为系统不重启且保留死机时内存中所有信息的模式;导出模块,用于在系统进入驻留模式后,根据用户输入的内存导出命令,导出内存中的信息;故障定位模块,用于分析所导出的内存中的信息,对系统死机的故障进行定位。本发明实施例提供的一种嵌入式设备,包括本发明实施例提供的上述处理系统死机的装置。本发明实施例的有益效果包括本发明实施例提供的系统死机的处理方法、装置及设备,在系统死机时,自动控制系统进入驻留模式,这种驻留模式下,系统死机后并不重启,并且所有的内存中的信息都保留着,这样可以对死机时所有内存信息任意进行导出,由于所导出的内存信息涵盖了系统死机时内存中的全部内容,提高了故障的定位的准确度和效率,克服了现有技术中系统死机后直接重启,或者采用系统死机后根据预先记录的部分内存信息进行故障定位的种种弊端。
图1为本发明实施例提供的系统死机的处理方法的流程图;图2为本发明实施例提供的利用导出的内存中的信息进行故障定位的流程图;图3为本发明实施例提供的异常地址所属页的内容的示意图;图4为本发明实施例提供的系统运行到系统死机再到对系统死机进行处理总体流程图;图5为本发明实施例提供的处理系统死机的装置的结构示意图。
具体实施例方式下面结合附图,对本发明实施例提供的一种系统死机的处理方法、装置及设备的具体实施方式
进行详细地说明。本发明实施例提供的系统死机的处理方法、装置及设备中的系统,可以包括常用的计算机系统、嵌入式系统等具有计算功能的设备。本发明实施例提供的系统死机的处理方法,如图1所示,包括S101、在系统死机后,控制系统进入驻留模式;驻留模式是指系统不重启且保留死机时内存中所有信息的模式;S102、在系统进入驻留模式后,根据用户输入的内存导出命令,导出内存中的信息;S103、分析所导出的内存中的信息,对系统死机的故障进行定位。为了实现系统死机后不重启,并且尽可能地保留死机时内存中的全部信息,上述步骤SlOl S103的步骤之前,可以预先将控制系统进入驻留模式的相关代码添加至系统的相关软件中,并设置作为驻留模式开关的环境变量。在系统死机后,自动打开该驻留模式开关,或者还可以由人工打开。例如设置该环境变量为真(变量为非零),则打开驻留模式开关;反之,设置该环境变量为假(变量为零),则关闭驻留模式开关。因此,在上述步骤SlOl中,控制系统进入驻留模式,可以通过打开驻留模式开关实现,即将作为驻留模式开关的环境变量设置为一个设定的值(例如为1),即运行相应的代码,控制系统进入设定的驻留模式下。上述步骤S102中,可以采用现有的打印(DUMP,或者称为卸出、转储等,ISO将其定义为在某个特定时刻,把一个存储设备中的全部或部分的内容转录进另一个存储设备之中,目的通常是用于排除故障)方式来导出内存中的信息,系统判断接收到用户输入的导出命令(例如现有的cli命令)时,在驻留模式下将系统死机时的内存中的信息打印出来, 以便进行分析及故障定位,当然,本发明实施例并不限于上述内存信息的导出方式。上述步骤S103中,分析所导出的内存中的信息,对系统死机的故障进行定位,主要通过对异常地址的分析来确定是否发生改写,具体来说,上述步骤S103中,利用导出的内存中的信息进行故障定位的步骤如图2所示,包括S201、从所导出的内存中的信息中,确定导致系统死机所涉及的异常地址;
异常地址通常使用下述方式确定通过所打印的内存中的死机信息,确定可能引发死机故障的可疑的地址,作为异常地址,并取出该异常地址。S202、确定系统死机时该异常地址在内存中所属的页;在本步骤S202中,首先通过在所导出的内存中的信息中,查找用于存储全局变量地址信息的系统map文件;从map文件查找到页表起始地址所在变量的地址;根据页表起始地址所在变量的地址,查找页表起始地址所在变量的内容,获得所述页表起始地址;然后根据查找到的页表起始地址、该异常地址、页表起始地址到异常地址的页偏移量以及每个页的大小,计算出该异常地址所属页的地址,具体地,可以通过下述公式来计算Page = mem_map+ (((unsigned long) (addr) _PAGE_0FFSET) PAGE_SHIFT) *M上式中Page为所述异常地址所属页的地址;mem_map为页表起始地址;(unsigned long) (addr)为该异常地址,该异常地址为无符号长整数类型;PAGE_0FFSET为页偏移量,即页表起始地址到异常地址的偏移量;PAGE_SHIFT为每个页的大小;M为页表起始地址结构体的大小。S203、根据异常地址所属的页,查找系统死机时该页在内存中所属的缓冲池;在本步骤S203中,可以根据该异常地址所属的页的地址,从导出的内存的信息中,找到该页,该页的内容中记载了该页所属的缓冲池的相关信息,从而可以根据该页的内容确定该页所属的缓冲池。S204、根据该异常地址是否属于所查找的缓冲池的诊断结果,确定是否发生了地址改写的死机故障。在本步骤S204中,例如根据缓冲池的类型或者其他属性信息,判定该异常地址原本并不属于该缓冲池,那么可以定位是该缓冲池的使用者改写了地址,从而导致了系统死机的异常。为了更好地说明本发明实施例提供的系统死机的处理方法中对于故障定位的步骤,下面一个具体的实例进行说明。假设定位的异常地址为06DDF000,已知该地址应该是ZONE缓冲池对应的地址。嵌入式系统中根据内存管理的策略,内存的地址可以分属于ZONE缓冲池和DMA缓冲池,低地址内存所在的缓冲池为DMA缓冲池,高地址内存所在的缓冲池为ZONE缓冲池, ZONE缓冲池一般是指普通缓冲池,嵌入式系统所有应用者都可以使用,DMA缓冲池一般是专门为驱动服务的缓冲池。从map文件中找出变量memjnap (该变量记录的内容为页表起始地址)的地址,假设变量memjnap的地址为010dc368,然后根据010dc368这个地址,查找变量memjnap对应的内容即0x2097674,也就是页表起始地址。根据上述公式计算该异常地址所属页的地址Page = mem_map+(((unsignedlong) (addr) -PAGE_0FFSET) PAGE_SHIFT) *M其中页表起始地址为0x2097674 ;PAGE_0FFSET即页偏移量,是页表起始地址到该异常地址的偏移量,由于 0x06DDF000除以2的12次方为0,所以该实例中0x06DDF000偏移量为0,即页偏移量为0, 艮口 PAGE_0FFSET 为 0。(unsigned long) (addr) -PAGE_0FFSET)的值就等于该异常地址的值即 06DDF000 ;由于在该实例中一页的大小为4096个字节,即为2的12次方,因此PAG E_SHIFT 在该实例中等于12 ;在该实例中,M即页表起始地址的结构体大小为44。计算的结果为0x2097674+(0x06DDF000>> 12)*44 = 0x021C58C8 ;0x021C58C8即为计算出的该异常地址所属页的地址。根据该页的地址,查找到该页的内容,如图3所示,该页的内容中,可以查找到 cache (缓冲池)的相关信息,根据该页所属的缓冲池的标识——size-1024 (DMA),该缓冲池属于驱动专用内存,但是该异常地址原本应该属于ZONE缓冲池,因此可以确定缓冲池的标识——size-1024 (DMA)的使用者改写了该异常地址,导致了系统死机。在导出内存信息进行故障定位之后,或者用户不需要进行故障定位时,都可以发出系统退出驻留模式的命令,系统接收到用户发出的系统退出驻留模式的命令时,通过将预先配置的作为驻留模式开关的环境变量设置为另外一个设定的值例如0,控制系统退出驻留模式,并控制系统重启。如图4所示的是本发明实施例提供的系统运行到系统死机再到对系统死机进行处理的一个总体流程的示意图,该流程仅为本发明实施例提供的一种具体的实施方式,从该流程图可以看出,系统初始化后,如果发生异常,抛出异常信息,继而进入驻留模式,然后等待用户输入退出驻留模式的命令,或者内存打印命令等,如果用户输入退出驻留模式的命令,则直接退出驻留模式,否则判断是否收到打印内存的命令,如果收到,则打印内存,并根据打印的信息进行故障定位。如果收到退出驻留模式的命令,则退出驻留模式,并控制系统重启,进一步判断系统是否需要下电,如果是,则对控制该系统关机。基于同一发明构思,本发明实施例还提供了一种处理系统死机的装置和嵌入式设备,由于该装置和设备解决问题的原理与前述系统死机的处理方法相似,因此该装置和设备的实施可以参见前述方法的实施,重复之处不再赘述。本发明实施例提供的处理系统死机的装置,如图5所示,包括控制模块501,用于在系统死机后,控制系统进入驻留模式;驻留模式为系统不重启且保留死机时内存的所有信息的模式;导出模块502,用于在系统进入驻留模式后,根据用户输入的内存导出命令,导出内存中的信息;故障定位模块503,用于分析所导出的内存中的信息,对系统死机的故障进行定位。进一步地,上述控制模块501,具体用于通过将预先配置的作为驻留模式开关的环境变量设置为设定的值,控制系统进入驻留模式。
进一步地,上述故障定位模块503,具体用于从所导出的内存中的信息中,确定导致系统死机所涉及的异常地址;确定系统死机时所述异常地址在内存中所属的页;根据所述异常地址所属的页,查找系统死机时该页在内存中所属的缓冲池;以及根据所述异常地址是否属于所查找的缓冲池的诊断结果,确定是否发生了地址改写的死机故障。进一步地,上述故障定位模块503,具体用于在所导出的内存中的信息中,查找存储全局变量地址信息的系统map文件;从所述系统map文件中查找页表起始地址所在变量的地址;根据页表起始地址所在变量的地址,查找页表起始地址所在变量的内容,获得所述页表起始地址;根据查找到的页表起始地址、所述异常地址、页表起始地址到异常地址的页偏移量以及每个页的大小,计算出所述异常地址所属页的地址;以及根据所述异常地址所属的页的地址,从系统死机时该页的内容中确定该页所属的缓冲池。进一步地,上述故障定位模块503,具体用于通过下述公式,计算出所述异常地址所属页的地址Page = mem_map+(((unsigned long) (addr) -PAGE_0FF SET) PAGE_SHIFT)上式中Page为所述异常地址所属页的地址;mem_map为页表起始地址;(unsigned long) (addr)为所述异常地址,该异常地址为无符号长整数类型;PAGE_0FFSET为所述页偏移量;PAGE_SHIFT为每个页的大小;M为页表起始地址结构体的大小。进一步地,上述控制模块501,还用于在接收到用户发出的系统退出驻留模式的命令时,通过将预先配置的作为驻留模式开关的环境变量设置为另外一个设定的值,控制系统退出驻留模式,并控制系统重启。本发明实施例提供的上述处理系统死机的装置,在具体实施时,可以通过软件、硬件或者软硬件结合的方式实现,例如使用专用集成电路或其他硬件等同物来实现,或者采用软件的方式存储于存储器中并由处理器执行,以实现上述的各种功能。本发明实施例还提供了一种嵌入式设备,该嵌入式设备包括本发明实施例提供的上述处理系统死机的装置。本发明实施例提供的系统死机的处理方法、装置及设备,在系统死机时,自动控制系统进入驻留模式,这种驻留模式下,系统死机后并不重启,并且所有的内存中的信息都保留着,这样可以对死机时的所有内存信息任意进行导出,由于所导出的内存信息涵盖了系统死机时内存中的全部内容,提高了故障的定位的准确度和效率,克服了现有技术中系统死机后直接重启,或者采用系统死机后根据预先记录的部分内存信息进行故障定位的种种弊端。进一步地,本发明实施例提供的处理方法、装置及设备,利用系统死机的异常地址,查找到所属的内存缓冲池,并根据该异常地址是否应为该内存缓冲池的地址来判断是否发生地址改写这种隐蔽的死机故障,为较难准确定位的死机故障的定位提供了一种解决渠道。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种系统死机的处理方法,其特征在于,包括在系统死机后,控制系统进入驻留模式;所述驻留模式为系统不重启且保留死机时内存中所有信息的模式;在系统进入驻留模式后,根据用户输入的内存导出命令,导出内存中的信息; 分析所导出的内存中的信息,对系统死机的故障进行定位。
2.如权利要求1所述的方法,其特征在于,所述控制系统进入驻留模式,具体包括 通过将预先配置的作为驻留模式开关的环境变量设置为设定的值,控制系统进入驻留模式。
3.如权利要求1所述的方法,其特征在于,分析所导出的内存中的信息,对系统死机的故障进行定位,具体包括从所导出的内存中的信息中,确定导致系统死机所涉及的异常地址; 确定系统死机时所述异常地址在内存中所属的页; 根据所述异常地址所属的页,查找系统死机时该页在内存中所属的缓冲池; 根据所述异常地址是否属于所查找的缓冲池的诊断结果,确定是否发生了地址改写的死机故障。
4.如权利要求3所述的方法,其特征在于,确定所述异常地址所属的页,具体包括 在所导出的内存中的信息中,查找存储全局变量地址信息的系统map文件;从所述系统map文件中查找页表起始地址所在变量的地址;根据页表起始地址所在变量的地址,查找页表起始地址所在变量的内容,获得所述页表起始地址;根据查找到的页表起始地址、所述异常地址、页表起始地址到异常地址的页偏移量以及每个页的大小,计算出所述异常地址所属页的地址;所述根据所述异常地址所属的页,查找系统死机时该页在内存中所属的缓冲池,包括根据所述异常地址所属的页的地址,从系统死机时该页的内容中确定该页所属的缓冲池。
5.如权利要求4所述的方法,其特征在于,通过下述公式,计算出所述异常地址所属页的地址Page = mem_map+(((unsigned long)(addr)-PAGE_0FFSET) PAGE_SHIFT) 上式中Page为所述异常地址所属页的地址; mem_map为页表起始地址;(unsigned long) (addr)为所述异常地址,所述异常地址为无符号长整数类型; PAGE_0FFSET为所述页偏移量; PAGE_SHIFT为每个页的大小; M为页表起始地址结构体的大小。
6.如权利要求2所述的方法,其特征在于,在系统进入驻留模式后,还包括在接收到用户发出的系统退出驻留模式的命令时,通过将预先配置的作为驻留模式开关的环境变量设置为另外一个设定的值,控制系统退出驻留模式,并控制系统重启。
7.一种处理系统死机的装置,其特征在于,包括控制模块,用于在系统死机后,控制系统进入驻留模式;所述驻留模式为系统不重启且保留死机时内存中所有信息的模式;导出模块,用于在系统进入驻留模式后,根据用户输入的内存导出命令,导出内存中的 fn息;故障定位模块,用于分析所导出的内存中的信息,对系统死机的故障进行定位。
8.如权利要求7所述的装置,其特征在于,所述控制模块,具体用于通过将预先配置的作为驻留模式开关的环境变量设置为设定的值,控制系统进入驻留模式。
9.如权利要求7所述的装置,其特征在于,所述故障定位模块,具体用于从所导出的内存中的信息中,确定导致系统死机所涉及的异常地址;确定系统死机时所述异常地址在内存中所属的页;根据所述异常地址所属的页,查找系统死机时该页在内存中所属的缓冲池; 以及根据所述异常地址是否属于所查找的缓冲池的诊断结果,确定是否发生了地址改写的死机故障。
10.如权利要求9所述的装置,其特征在于,所述故障定位模块,用于确定系统死机时所述异常地址在内存中所属的页;根据所述异常地址所属的页,查找系统死机时该页在内存中所属的缓冲池,具体为在所导出的内存中的信息中,查找存储全局变量地址信息的系统map文件;从所述系统map文件中查找页表起始地址所在变量的地址;根据页表起始地址所在变量的地址,查找页表起始地址所在变量的内容,获得所述页表起始地址;根据查找到的页表起始地址、所述异常地址、页表起始地址到异常地址的页偏移量以及每个页的大小,计算出所述异常地址所属页的地址;以及根据所述异常地址所属的页的地址,从系统死机时该页的内容中确定该页所属的缓冲池。
11.如权利要求10所述的装置,其特征在于,所述故障定位模块,具体用于通过下述公式,计算出所述异常地址所属页的地址Page = mem_map+(((unsigned long) (addr)-PAGE_0FF SET) PAGE_SHIFT) 上式中Page为所述异常地址所属页的地址; mem_map为页表起始地址;(unsigned long) (addr)为所述异常地址,所述异常地址为无符号长整数类型; PAGE_0FFSET为所述页偏移量; PAGE_SHIFT为每个页的大小; M为页表起始地址结构体的大小。
12.如权利要求8所述的装置,其特征在于,所述控制模块,还用于在接收到用户发出的系统退出驻留模式的命令时,通过将预先配置的作为驻留模式开关的环境变量设置为另外一个设定的值,控制系统退出驻留模式,并控制系统重启。
13.—种嵌入式设备,其特征在于,该嵌入式设备包括如权利要求7-11任一项所述的直ο
全文摘要
本发明公开了一种系统死机的处理方法、装置及设备。其中,该方法包括在系统死机后,控制系统进入驻留模式;所述驻留模式为系统不重启且保留死机时内存的所有信息的模式;在系统进入驻留模式后,根据用户输入的内存导出命令,导出内存中的信息;分析所导出的内存中的信息,对系统死机的故障进行定位。由于导出的内存信息涵盖了系统死机时内存中的全部内容,提高了故障的定位的准确度和效率,克服了现有技术中系统死机后直接重启,或者采用系统死机后根据预先记录的部分内存信息进行故障定位的种种弊端。
文档编号G06F11/07GK102262571SQ20111020877
公开日2011年11月30日 申请日期2011年7月25日 优先权日2011年7月25日
发明者林双凤 申请人:福建星网锐捷网络有限公司