一种基于堆栈追溯的故障排查装置和方法制造方法及图纸

技术编号:14479758 阅读:144 留言:0更新日期:2017-01-25 12:26
本发明专利技术涉及一种基于堆栈追溯的故障排查装置和方法,为应对嵌入式计算机系统在使用现场发生的故障难以定位缺陷,并且难以在实验室复现的问题,本发明专利技术提出了一种基于堆栈追溯的故障排查装置,包括:堆栈追溯故障记录模块,故障记录载体,目标码反汇编工具,堆栈存储模块。通过在故障异常处理过程中,使用堆栈追溯故障记录模块,将堆栈存储模块中相关的堆栈信息向上追溯,逐级保存到故障记录载体中,并结合目标码反汇编工具,进行计算机系统缺陷的定位。通过本方法,可以极大程度提升嵌入式计算机系统缺陷定位的效率。

【技术实现步骤摘要】

本专利技术属于嵌入式计算机的使用技术,具体涉及一种复杂嵌入式软件使用过程中,一种基于堆栈追溯的故障排查方法。
技术介绍
随着传感器技术、自动化控制技术、数字化技术的不断发展,处理器的性能不断提升,导致嵌入式计算机上运行的功能越来越复杂,往往需要将多种功能软件模块集成到一个处理器上,共同满足一个系统级功能,复杂度的提升,导致软件、硬件设计中的缺陷更加难以避免,系统功能的验证,以及故障排查成为功能集成后,需不断花费时间进行的一项工作。对于嵌入式系统的设计,当发生故障时,往往通过硬件产生一个中断,或者处理器自身上报一个内部异常,让用户可以根据中断或者内部异常发生时的上下文状态,进行故障的排查。对于一个集成多种功能的复杂嵌入式软件,系统级故障往往可能仅在极为特殊的环境下才能够出现。如果在故障发生的那一瞬间,没有记录下足够多的故障信息,那么由于难以再次营造出完全一样的条件与环境再次复现故障,或者引发故障的条件是极为特殊,让人难以意料到的组合条件,将极大的增加故障排查的难度。因此,在故障时刻记录下尽可能详尽的故障信息,是进行故障排查的必要手段。然而,对一些故障而言,引发故障的真实原因,其实发生在故障发生之前的某一时刻。缺陷起作用时,故障可能并不会立刻发作,而是在系统又运行了一段时间,缺陷不断蔓延,最终才在系统级别反映出发生了一个故障,一种典型的例子,就是堆栈被错误的修改,导致程序跳转向错误的地址。在这种情况下,仅仅记录故障发生时刻的信息,仍旧不能为用户的故障排查提供充分的信息。为此,需要提出一种故障记录方法,能够方便用户对缺陷产生的实际位置进行分析和追踪。专利技术内容本专利技术的目的是:为帮助复杂嵌入式系统进行不明原因的偶发故障排查,而提出的一种基于堆栈追溯来定位缺陷位置的方法。本专利技术的技术方案:提供一种基于堆栈追溯的故障排查装置,其特征在于,包括:堆栈追溯故障记录模块,在故障引发的硬件中断或者处理器内部异常响应函数中堆栈追溯故障记录模块被触发,将故障发生时刻计算机内部的通用寄存器信息、与故障相关的寄存器信息、堆栈存储模块中保存的各级函数调用堆栈指针信息、函数调用返回信息、堆栈存储模块中保存的各级中断发生时中断处理的堆栈指针信息、堆栈存储模块中保存的中断发生时刻处理器运行地址、中断类型信息发送给故障记录载体;故障记录载体:用于记录故障发生后堆栈追溯故障记录模块传输来的所有信息,让故障排查人员可以再次读取到所有故障记录信息;目标码反汇编工具:故障排查人员可以借助目标码反汇编工具,将目标码中的函数地址信息解析出来,对照故障记录信息中的地址,判断堆栈存储模块中保存的地址信息隶属于哪一个函数的哪一个功能语句中。堆栈存储模块:堆栈存储模块用来保存函数调用以及中断处理的历史信息,由堆栈追溯故障记录模块将堆栈存储模块中的相应信息读取出来保存到故障记录载体中。提供一种基于堆栈追溯的故障排查方法,其特征在于,包括以下步骤:步骤一:使得所有故障处理中断及内部异常的响应函数能够调用堆栈追溯故障记录模块,在初始堆栈中上一级堆栈指针位置处,存入数据0;步骤二:当故障发生后,触发堆栈追溯故障记录模块,识别当前进入的故障中断或者进入的内部异常的类型,将识别后的类型信息,故障发生时刻处理器上下文的全部寄存器信息发送给故障记录载体;步骤三:堆栈追溯故障记录模块将发生故障时的堆栈指针值,赋给堆栈追溯指针;步骤四:堆栈追溯故障记录模块根据堆栈追溯指针当前位置与保存的堆栈指针上一级位置之差值,以及堆栈上一级中保存的类型信息,判断堆栈上一级中保存的是函数处理信息,还是中断处理信息;如果是函数处理信息,则获取上一级函数处理过程中的堆栈指针信息,以及堆栈存储模块中保存的函数返回运行地址信息,传输给故障记录载体,并将上一级堆栈指针传递给堆栈追溯指针,进入步骤五,否则,将堆栈存储模块中保存的中断发生时刻堆栈指针信息、中断发生时刻处理器运行地址信息,以及中断类型信息同样传输给故障记录载体,进行相应的信息记录,并将上一级堆栈指针传递给堆栈追溯指针,进入步骤五;步骤五:判断堆栈追溯指针的上一级位置是否为0,若不是,则重复步骤四,否则进入步骤六;步骤六:由故障记录载体中获取故障发生时刻相应的故障记录信息,并配合目标码的反汇编工具,进行故障缺陷位置的定位,若能够定位,则结束,否则若不能定位进入步骤七;步骤七:由故障记录载体中向上追溯获取堆栈信息,并配合目标码反汇编工具,进行故障缺陷位置的定位,若能够定位,则结束,否则进行向上追溯的堆栈指针是否为0的判断,若不为0,重复步骤七,否则进入步骤八;步骤八:得出缺陷无法在堆栈追溯中进行定位的结论,并将故障记录载体中保存的所有信息进行备份记录。进一步的,步骤一中,定义堆栈追溯层次数,当在步骤五中重复次数达到定义的堆栈追溯层次数,则进入步骤六。本专利技术的有益效果:通过本方面提出的方法和装置,能够极大限度的记录下故障记录发生的现场以及历史原因,从而大幅度减少设计缺陷定位的难度。附图说明图1为一种基于堆栈追溯的故障排查装置的组成示意图;图2为一种基于堆栈追溯的故障排查方法的流程示意图;图3为一种基于堆栈追溯的故障排查方法使用的实例如。具体实施方式参见图1,提供一种基于堆栈追溯的故障排查装置,其特征在于,包括:堆栈追溯故障记录模块,在故障引发的硬件中断或者处理器内部异常响应函数中堆栈追溯故障记录模块被触发,将故障发生时刻计算机内部的通用寄存器信息、与故障相关的寄存器信息、堆栈存储模块中保存的各级函数调用堆栈指针信息、函数调用返回信息、堆栈存储模块中保存的各级中断发生时中断处理的堆栈指针信息、堆栈存储模块中保存的中断发生时刻处理器运行地址、中断类型信息发送给故障记录载体;故障记录载体:用于记录故障发生后堆栈追溯故障记录模块传输来的所有信息,让故障排查人员可以再次读取到所有故障记录信息,在实施例中,故障记录载体可以在NVRAM、FLASH、EEPROM或者通过串口输出后进行记录;目标码反汇编工具:故障排查人员可以借助目标码反汇编工具,将目标码中的函数地址信息解析出来,对照故障记录信息中的地址,判断堆栈存储模块中保存的地址信息隶属于哪一个函数的哪一个功能语句中,在实施例中,目标码反汇编工具可以为GCC的objdump工具。堆栈存储模块:堆栈存储模块用来保存函数调用以及中断处理的历史信息,由堆栈追溯故障记录模块将堆栈存储模块中的相应信息读取出来保存到故障记录载体中。参见图2,提供一种基于堆栈追溯的故障排查方法,其特征在于,包括以下步骤:步骤一:使得所有故障处理中断及内部异常的响应函数能够调用堆栈追溯故障记录模块,在初始堆栈中上一级堆栈指针位置处,存入数据0;步骤二:当故障发生后,触发堆栈追溯故障记录模块,识别当前进入的故障中断或者进入的内部异常的类型,将识别后的类型信息,故障发生时刻处理器上下文的全部寄存器信息发送给故障记录载体,在实施例中,故障中断可为地址访问超时中断,内部异常可为除零异常、非法指令异常。;步骤三:堆栈追溯故障记录模块将发生故障时的堆栈指针值,赋给堆栈追溯指针;步骤四:堆栈追溯故障记录模块根据堆栈追溯指针当前位置与保存的堆栈指针上一级位置之差值,以及堆栈上一级中保存的类型信息,判断堆栈上一级中保存的是函数处理信息,还是中断处本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/201610664261.html" title="一种基于堆栈追溯的故障排查装置和方法原文来自X技术">基于堆栈追溯的故障排查装置和方法</a>

【技术保护点】
一种基于堆栈追溯的故障排查装置,其特征在于,包括:堆栈追溯故障记录模块,在故障引发的硬件中断或者处理器内部异常响应函数中堆栈追溯故障记录模块被触发,将故障发生时刻计算机内部的通用寄存器信息、与故障相关的寄存器信息、堆栈存储模块中保存的各级函数调用堆栈指针信息、函数调用返回信息、堆栈存储模块中保存的各级中断发生时中断处理的堆栈指针信息、堆栈存储模块中保存的中断发生时刻处理器运行地址、中断类型信息发送给故障记录载体;故障记录载体:用于记录故障发生后堆栈追溯故障记录模块传输来的所有信息,让故障排查人员可以再次读取到所有故障记录信息;目标码反汇编工具:故障排查人员可以借助目标码反汇编工具,将目标码中的函数地址信息解析出来,对照故障记录信息中的地址,判断堆栈存储模块中保存的地址信息隶属于哪一个函数的哪一个功能语句中。堆栈存储模块:堆栈存储模块用来保存函数调用以及中断处理的历史信息,由堆栈追溯故障记录模块将堆栈存储模块中的相应信息读取出来保存到故障记录载体中。

【技术特征摘要】
1.一种基于堆栈追溯的故障排查装置,其特征在于,包括:堆栈追溯故障记录模块,在故障引发的硬件中断或者处理器内部异常响应函数中堆栈追溯故障记录模块被触发,将故障发生时刻计算机内部的通用寄存器信息、与故障相关的寄存器信息、堆栈存储模块中保存的各级函数调用堆栈指针信息、函数调用返回信息、堆栈存储模块中保存的各级中断发生时中断处理的堆栈指针信息、堆栈存储模块中保存的中断发生时刻处理器运行地址、中断类型信息发送给故障记录载体;故障记录载体:用于记录故障发生后堆栈追溯故障记录模块传输来的所有信息,让故障排查人员可以再次读取到所有故障记录信息;目标码反汇编工具:故障排查人员可以借助目标码反汇编工具,将目标码中的函数地址信息解析出来,对照故障记录信息中的地址,判断堆栈存储模块中保存的地址信息隶属于哪一个函数的哪一个功能语句中。堆栈存储模块:堆栈存储模块用来保存函数调用以及中断处理的历史信息,由堆栈追溯故障记录模块将堆栈存储模块中的相应信息读取出来保存到故障记录载体中。2.一种基于堆栈追溯的故障排查方法,其特征在于,包括以下步骤:步骤一:使得所有故障处理中断及内部异常的响应函数能够调用堆栈追溯故障记录模块,在初始堆栈中上一级堆栈指针位置处,存入数据0;步骤二:当故障发生后,触发堆栈追溯故障记录模块,识别当前进入的故障中断或者进入的内部异常的类型,将识别后的类型信息,故障发生时刻处理器上下文的全部寄存器信息发送给故障记录载体;步骤三:堆栈追溯故障记录模块将发生故障时...

【专利技术属性】
技术研发人员:颜纪迅宋科璞武方方郑小宁徐建军苏春宇
申请(专利权)人:中国航空工业集团公司西安飞行自动控制研究所
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1