CN1776644A - 一种基于有限状态机的对内存变量改写进行监控的方法 - Google Patents

一种基于有限状态机的对内存变量改写进行监控的方法 Download PDF

Info

Publication number
CN1776644A
CN1776644A CN 200510130456 CN200510130456A CN1776644A CN 1776644 A CN1776644 A CN 1776644A CN 200510130456 CN200510130456 CN 200510130456 CN 200510130456 A CN200510130456 A CN 200510130456A CN 1776644 A CN1776644 A CN 1776644A
Authority
CN
China
Prior art keywords
monitoring
state machine
finite state
variable
condition
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.)
Granted
Application number
CN 200510130456
Other languages
English (en)
Other versions
CN100388234C (zh
Inventor
刘红军
吴从海
李海建
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CNB2005101304560A priority Critical patent/CN100388234C/zh
Publication of CN1776644A publication Critical patent/CN1776644A/zh
Application granted granted Critical
Publication of CN100388234C publication Critical patent/CN100388234C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种基于有限状态机的对内存变量改写进行监控的方法,包含:根据要监控的内存变量的监控参数,以及监控条件,设置监控单元;在有限状态机的不同位置设置若干监控点;当程序运行到监控点时,判断监控单元中记录的相应的监控条件是否已满足;如果所述监控条件已经满足,则在有限状态机的监控点输出监控信息。本发明的优点在于:在硬件CPU不具有数据调试寄存器的情况下,将非堆栈变量被改写的故障定位到FSM的状态和事件级,大大提高了调试效率,定位准确,实时性好,也可进一步通过本方案将非堆栈变量被改写定位到FSM内的函数级。

Description

一种基于有限状态机的对内存变量改写进行监控的方法
技术领域
本发明涉及一种在有限状态机的嵌入式软件环境中,引入监测非堆栈内存变量被改写的方法,提供一种基于共享全局内存的多任务运行环境下定位非堆栈变量被改写的手段,尤其涉及一种基于有限状态机的对内存变量改写进行监控的方法。
背景技术
在嵌入式多任务环境中,如何定位非堆栈变量被错误改写是调试过程以及版本运行过程中最费神的一项工作,多任务情况下同一时间有多个任务并发执行,如何确定非堆栈变量何时被错误改写、被谁错误改写、如何捕捉错误改写是软件调试或软件故障定位中首先要考虑的问题。
在现有的非堆栈内存变量读写监控方法中,一般是通过硬件手段来定位非堆栈内存变量被错误改写的故障。现有很多商用仿真器或调试器利用中央处理器(CPU-Central Process Unit)提供的数据调试寄存器,设置数据读写硬件断点,实现对读写变量的监控。该方式的优点是能够进行准确定位,实时性好,但该方式也存在缺陷:它要依赖于CPU硬件,当CPU硬件不提供数据调试寄存器时,就无法完成对非堆栈变量被改写的监视;另外,该方法也受限于CPU的数据断点寄存器个数,一次监控的变量个数不能超过数据断点寄存器的个数,使其应用范围受到限制。
另一种对非堆栈变量错误改写的监控方法主要是依赖变量改写后引起CPU异常,然后利用堆栈回溯的方法进行定位,如在专利CN02136697“嵌入式操作系统中异常故障定位方法”中所述。该方法的缺陷在于,在共享全局内存的多任务处理环境中,由于多个任务处在统一编址的地址空间内,当一个任务错误地更改另一个任务的非堆栈状态变量后,并不一定会或不会立即造成CPU内存读写异常,常常出现一个任务运行了很长时间后,可能由于其它部分的内存读写,引起CPU异常中断的现象。由于这种迟滞效应,使非堆栈变量被错误改写的故障定位难度加大。
在嵌入式软件领域中,软件常常被建模为若干个有限状态机(FSM-FiniteState Machine)之间的交互,每个FSM又被抽象为一个五元组,即输入集、输出集、状态集、初始状态和映射函数。正常运行的FSM一般由输入和当前状态决定其动作和输出;在具体实现时,这些FSM又常常被映射到一个操作系统的进程或任务来实现,这些进程或任务收到一个事件(消息)后,执行动作,并输出相应的结果。非堆栈变量被错误改写可充分利用嵌入式软件的这种特点,进行有效的故障定位。
发明内容
本发明所要解决的技术问题在于提供一种充分利用软件由有限状态机进行建模处理的特点,通过对FSM的当前状态和事件进行跟踪,监测该FSM在执行动作中是否对所监控的非堆栈变量,即任意非堆栈范围内的变量,进行了不希望的更改,如果发现更改,则记录并输出当前状态和事件信息,力求在尽可能早的时间完成对非堆栈变量被错误改写的监控。
为了解决上述技术问题,本发明利用FSM的调度,将非堆栈变量被改写操作定位到某一FSM的状态和事件,提供一种基于有限状态机的对内存变量改写进行监控的方法,所述方法包含:(1)根据要监控的内存变量的监控参数,以及监控条件,设置监控单元;(2)在有限状态机的不同位置设置若干监控点;(3)当程序运行到监控点时,判断监控单元中记录的相应的监控条件是否已满足;(4)如果所述监控条件已经满足,则在有限状态机的监控点输出监控信息。
本发明的优点在于:在硬件CPU不具有数据调试寄存器的情况下,将非堆栈变量被改写的故障定位到FSM的状态和事件级,大大提高了调试效率,定位准确,实时性好,也可进一步通过本方案将非堆栈变量被改写定位到FSM内的函数级。
附图说明
图1为本发明实施例1在监控点对监控单元进行监控的方法流程图;
图2为本发明实施例1中监控点的设置流程图;
图3为本发明实施例2的监控流程图。
具体实施方式
下面结合附图,对本发明的实施例进行详细说明。
实施例1
如图1所示,本发明提供一种基于有限状态机的对内存变量改写进行监控的方法,具体包含:
首先,根据要监控的内存变量的监控参数,以及监控条件,设置监控单元(步骤101)。然后,在有限状态机的不同位置设置若干监控点(步骤102)。当程序运行到监控点时,判断监控单元中记录的相应的监控条件是否已经满足(步骤103)。如果所述监控条件已经满足,则在有限状态机的监控点输出监控信息(步骤104)。接着,对下一个监控单元进行监控(步骤105)。如果所述监控条件没有满足,则直接对下一个监控单元进行监控(步骤105)。
如图2所示,设置监控单元的具体步骤如下:
a、确定要监控的变量的内存地址(步骤201)。
b、确定要监控变量的数据类型和数据长度(步骤202)。变量长度与变量类型相对应,如BYTE型变量长度为1,WORD型变量长度为2,DWORD型变量长度为4等。变量长度可以是任意长度,内存数据变量长度可以任意指定。
c、确定内存监控条件(步骤203)。监控条件包括监控值和监控逻辑。监控值就是判定条件使用的值,监控逻辑包括但不限于等于、大于、小于、不等于,不大于、不小于、大于等于、小于等于以及各种组合条件。
d、生成新的监控单元(步骤204)。
e、根据需要监控的变量信息设置监控单元(步骤205)。每次设置一个监控单元,通过多次设置可以对多个单元进行设置,不限制变量个数。
f、把新的监控单元放入监控队列(步骤206)。在实现中,采用链表来存储监控单元,使用一个变量记录监控单元的个数,当有新单元插入到监控单元的链表中,监控个数累加一。
监控点就是在何时进行内存监控的条件判断,当监控条件成立时,在该点记录或输出相应的信息。监控点可以设置在有限状态机的入口处;有限状态机的出口处;有限状态机的内部处理流程中。在通常的嵌入式操作系统中,可以在任务或进程的上下文切换时设置控制点。一般实现时均是以上几种情况的综合应用。
在各监控点输出的监控信息如下所示:
在有限状态机的入口处,如果有设置的条件满足,则记录并输出前次状态机的状态、当前收到的事件及其内容;
在有限状态机的出口处,如果有设置的条件满足,则记录并输出本次状态机的状态、处理的事件及其内容、发生的时间。
在有限状态机的内部处理流程中,即在特定的状态下执行某事件的处理流程,如果设置的条件满足,则可以记录运行程序的位置,在具体实现时可以把程序断住,以方便观察调试。
在通常的嵌入式操作系统中,在任务或进程的切换时,如果有设置的条件满足,则可以记录上下文切换前后的任务或进程的信息。
实施例2
如图3所示,在本发明中,当不能确定监控点及监控单元是否设置时,具体流程如下:
首先,判断监控点是否设置(步骤301),如果监控点没有设置,则退出监控程序。如果已经设置监控点,则判断监控单元是否设置(步骤302);如果已经设置监控单元,则取出一个监控单元,判断是否已监控完毕(步骤303);如果没有监控完毕,则判断该监控单元监控条件是否满足(步骤304);如果监控条件满足,则标记该单元监控完毕标志,并记录监控信息(步骤305),判断监控单元是否扫描结束(步骤306);而在上述过程中,没有检测到监控单元或发现该监控单元已经监控完毕或该监控单元的监控条件没有满足,都将直接判断监控单元是否扫描结束(步骤306)。如果没有结束对监控单元的扫描,则重复对监控单元的判断,如果监控单元扫描结束,则完成本次监控程序。
在基站软件的设计过程中,各业务软件模块抽象成一个个FSM,每个FSM被映射到一个规范描述语言(SDL-Specification Description Language)进程来实现。
本发明具有一定的通用性,其使用并不局限于基于有限状态机的多任务环境,还可以推广应用于很多其他环境中,如:进程上下文切换共享内存的非堆栈变量监视、基于消息的中间件中非堆栈内存变量的监视处理等。
在基站软件调试过程中,采用本发明时,可监测到小区管理进程的全局变量被数据库装载进程在执行增量同步时越界改写。

Claims (8)

1、一种基于有限状态机的对内存变量改写进行监控的方法,其特征在于,包括如下步骤:
(1)根据要监控的内存变量的监控参数,以及监控条件,设置监控单元;
(2)在有限状态机的不同位置设置若干监控点;
(3)当程序运行到监控点时,判断监控单元中记录的相应的监控条件是否已满足;
(4)如果所述监控条件已经满足,则在有限状态机的监控点输出监控信息。
2、如权利要求1所述的方法,其特征在于,所述监控参数包括:内存地址、数据类型、数据长度。
3、如权利要求1所述的方法,其特征在于,所述监控条件包括监控值与监控逻辑。
4、如权利要求1所述的方法,其特征在于,所述步骤(2)中,监控点设置的位置包括以下位置的组合:
有限状态机的入口处;
有限状态机的出口处;
有限状态机的内部处理流中;
在任务或进程的上下文切换处。
5、如权利要求4所述的方法,其特征在于,如果在有限状态机的入口处、有限状态机的出口处、有限状态机的内部处理流中或在任务、进程的上下文切换处没有检测到监控点,则退出监控程序。
6、如权利要求1所述的方法,其特征在于,所述步骤(3)中,如果当程序运行到监控点时,没有检测到监控单元,则退出监控程序。
7、如权利要求1所述的方法,其特征在于,所述步骤(3)中,如果在当前监控单元中记录的相应的监控条件没有满足,则退出当前监控单元的监控,而监控下一个监控单元。
8、如权利要求1所述的方法,其特征在于,所述步骤(4)包括:
在有限状态机的入口处,如果设置的监控条件满足,则记录并输出前次状态机的状态、当前收到的事件及其内容;
在有限状态机的出口处,如果设置的监控条件满足,则记录并输出本次状态机的状态、处理的事件及其内容、发生的时间;
在有限状态机的内部处理流程中,如果设置的监控条件满足,则记录运行程序的位置;
在任务或进程的上下文切换处,如果设置的监控条件满足,则记录上下文切换前后的任务或进程的信息。
CNB2005101304560A 2005-12-09 2005-12-09 一种基于有限状态机的对内存变量改写进行监控的方法 Expired - Fee Related CN100388234C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2005101304560A CN100388234C (zh) 2005-12-09 2005-12-09 一种基于有限状态机的对内存变量改写进行监控的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2005101304560A CN100388234C (zh) 2005-12-09 2005-12-09 一种基于有限状态机的对内存变量改写进行监控的方法

Publications (2)

Publication Number Publication Date
CN1776644A true CN1776644A (zh) 2006-05-24
CN100388234C CN100388234C (zh) 2008-05-14

Family

ID=36766161

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2005101304560A Expired - Fee Related CN100388234C (zh) 2005-12-09 2005-12-09 一种基于有限状态机的对内存变量改写进行监控的方法

Country Status (1)

Country Link
CN (1) CN100388234C (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063368A (zh) * 2010-12-16 2011-05-18 国网电力科学研究院 基于命名变量的全景数据在线实时调试方法
CN102306109A (zh) * 2011-07-18 2012-01-04 深圳市康必达中创科技有限公司 一种实现通讯管理机内部逻辑可编程方法
CN103198012A (zh) * 2013-04-25 2013-07-10 李姮乐 一种基于扩展状态机图的测试用例自动产生方法
CN104239201A (zh) * 2013-06-20 2014-12-24 上海博达数据通信有限公司 一种软单步系统中内存读写监控方法
CN104731696A (zh) * 2013-12-19 2015-06-24 腾讯科技(深圳)有限公司 定位程序代码中bug的方法及相关装置
CN104782072A (zh) * 2012-11-12 2015-07-15 华为技术有限公司 采用可靠停等混合自动重传请求协议的系统和方法
CN105159809A (zh) * 2015-09-29 2015-12-16 杭州华为数字技术有限公司 基于状态机故障定位方法以及装置
CN107657316A (zh) * 2016-08-12 2018-02-02 北京深鉴科技有限公司 通用处理器与神经网络处理器的协同系统设计
CN109918265A (zh) * 2019-02-28 2019-06-21 沈阳天眼智云信息科技有限公司 嵌入式微处理器运行内存的监测方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1117322C (zh) * 1999-03-04 2003-08-06 英业达股份有限公司 文件系统的动态监控方法
CN1310395A (zh) * 2000-02-24 2001-08-29 英业达股份有限公司 登记库的动态监控方法
EP1274013A1 (en) * 2001-07-03 2003-01-08 Hewlett-Packard Company Process monitor module

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063368B (zh) * 2010-12-16 2013-03-27 国网电力科学研究院 基于命名变量的全景数据在线实时调试方法
CN102063368A (zh) * 2010-12-16 2011-05-18 国网电力科学研究院 基于命名变量的全景数据在线实时调试方法
CN102306109A (zh) * 2011-07-18 2012-01-04 深圳市康必达中创科技有限公司 一种实现通讯管理机内部逻辑可编程方法
CN104782072A (zh) * 2012-11-12 2015-07-15 华为技术有限公司 采用可靠停等混合自动重传请求协议的系统和方法
CN104782072B (zh) * 2012-11-12 2019-03-19 华为技术有限公司 采用可靠停等混合自动重传请求协议的系统和方法
US10153869B2 (en) 2012-11-12 2018-12-11 Huawei Technologies Co., Ltd. System and method adopting a reliable stop-and-wait hybrid automatic repeat request protocol
CN103198012A (zh) * 2013-04-25 2013-07-10 李姮乐 一种基于扩展状态机图的测试用例自动产生方法
CN104239201B (zh) * 2013-06-20 2018-08-24 上海博达数据通信有限公司 一种软单步系统中内存读写监控方法
CN104239201A (zh) * 2013-06-20 2014-12-24 上海博达数据通信有限公司 一种软单步系统中内存读写监控方法
US9772924B2 (en) 2013-12-19 2017-09-26 Tencent Technology (Shenzhen) Company Limited Method and apparatus for finding bugs in computer program codes
CN104731696B (zh) * 2013-12-19 2017-10-10 腾讯科技(深圳)有限公司 定位程序代码中bug的方法及相关装置
WO2015090143A1 (en) * 2013-12-19 2015-06-25 Tencent Technology (Shenzhen) Company Limited Method and apparatus for finding bugs in computer program codes
CN104731696A (zh) * 2013-12-19 2015-06-24 腾讯科技(深圳)有限公司 定位程序代码中bug的方法及相关装置
CN105159809A (zh) * 2015-09-29 2015-12-16 杭州华为数字技术有限公司 基于状态机故障定位方法以及装置
CN105159809B (zh) * 2015-09-29 2018-11-16 杭州华为数字技术有限公司 基于状态机故障定位方法以及装置
CN107657316A (zh) * 2016-08-12 2018-02-02 北京深鉴科技有限公司 通用处理器与神经网络处理器的协同系统设计
CN107657316B (zh) * 2016-08-12 2020-04-07 北京深鉴智能科技有限公司 通用处理器与神经网络处理器的协同系统设计
CN109918265A (zh) * 2019-02-28 2019-06-21 沈阳天眼智云信息科技有限公司 嵌入式微处理器运行内存的监测方法

Also Published As

Publication number Publication date
CN100388234C (zh) 2008-05-14

Similar Documents

Publication Publication Date Title
CN100388234C (zh) 一种基于有限状态机的对内存变量改写进行监控的方法
US20190146785A1 (en) Diagnosing Production Applications
US8140908B2 (en) System and method of client side analysis for identifying failing RAM after a user mode or kernel mode exception
US20090193298A1 (en) System and method of fault detection, diagnosis and prevention for complex computing systems
US8516444B2 (en) Debugging a high performance computing program
US7877642B2 (en) Automatic software fault diagnosis by exploiting application signatures
US8291379B2 (en) Runtime analysis of a computer program to identify improper memory accesses that cause further problems
CN101976217B (zh) 网络处理器异常检测方法及系统
CN1991785A (zh) 用于分析运行时存储器访问错误的方法和系统
US20130159977A1 (en) Open kernel trace aggregation
CN101719090A (zh) 对计算机软件系统崩溃原因进行自动分析的方法
CN103109276B (zh) 系统测试方法
EP1654656A2 (en) Apparatus and method for software debugging
CN1466057A (zh) 一种软件内存泄露的检查方法
US7793160B1 (en) Systems and methods for tracing errors
CN103049373B (zh) 一种崩溃的定位方法和装置
CN105718374A (zh) 一种热点模块指令跟踪的方法及系统
US20180089007A1 (en) Detecting root causes of use-after-free memory errors
US20100088546A1 (en) Statistical debugging using paths and adaptive profiling
US8489652B2 (en) Tracking object fields using relocatable object watchpoints
Ezzati-Jivan et al. Depgraph: Localizing performance bottlenecks in multi-core applications using waiting dependency graphs and software tracing
CN112965845A (zh) 延迟分析方法、电子设备及存储介质
CN101237350B (zh) 用于多任务环境单板机的全局变量异常改写定位方法
CN1677363A (zh) 一种计算机cpu抗干扰的设计方法
CN1831785A (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: 20080514

Termination date: 20171209

CF01 Termination of patent right due to non-payment of annual fee