发明名称 一种航天嵌入式C语言软件运行时错误的静态分析方法
摘要 本发明公开了一种航天嵌入式C语言软件运行时错误的静态分析方法。包括:(1)将航天嵌入式C语言软件运行时错误按照错误的发生机制进行分类,根据每类错误构造属性状态机的步骤。(2)根据构造的待检测软件源代码的程序控制流图和属性状态机获得程序控制流图中各节点的属性状态和路径条件的步骤。(3)根据获得的属性状态和路径条件对运行时错误进行分析的步骤。采用本发明提高了对航天嵌入式C语言软件运行时错误进行检测的准确度和效率。
申请公布号 CN102508766B 申请公布日期 2014.12.17
申请号 CN201110291315.2 申请日期 2011.09.29
申请人 中国航天科技集团公司第七一〇研究所 发明人 王崑声;詹海潭;经小川;张刚;李宁
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 中国航天科技专利中心 11009 代理人 臧春喜
主权项 一种航天嵌入式C语言软件运行时错误的静态分析方法,其特征在于包括以下步骤:(1)对航天嵌入式C语言软件运行时错误进行分类,按照分类后每类错误的属性模式构造属性状态机,所述属性状态机包括程序运行过程中可能出现的属性状态D<sub>i</sub>,i={1,…n},n为每类错误中的属性状态总数,D<sub>i</sub>包括程序运行过程中可能的出现的错误状态;所述属性状态机根据错误的属性模式可分为:空指针解引用属性状态机、资源泄露属性状态机、未初始化变量引用属性状态机和除零错误属性状态机;所述属性状态机由状态转移集合T组成,所述状态转移集合T为D<sub>i</sub>×conditions<sub>i</sub>→D<sub>k</sub>,i,k={1,…n},其中,D<sub>i</sub>和D<sub>k</sub>为属性状态,D<sub>k</sub>为源属性状态D<sub>i</sub>在转移条件为conditions<sub>i</sub>时的目标属性状态;所述转移条件conditions<sub>i</sub>为根据C语言确定的对数据流的操作;(2)按照程序的控制流程图和运行时错误的属性状态机,根据控制流程图中位置l处的节点信息和输入属性状态σ<sub>l_in</sub>,获得经位置l处的节点处理后的输出属性状态σ<sub>l_out</sub>和路径条件C<sub>s,l</sub>,其中,s为到达位置l处的路径;(3)判断σ<sub>l_out</sub>与属性状态D<sub>i</sub>的关系:若σ<sub>l_out</sub>为D<sub>i</sub>中的错误状态,则将路径条件C<sub>s,l</sub>作为可能出现的错误提示输出,并不再对C<sub>s,l</sub>进行后续分析;否则,将σ<sub>l_out</sub>作为下一个位置处的输入属性状态返回步骤(2),直到程序出口。
地址 100048 北京市海淀区阜成路14号