CN103383566B - 一种程序流监控方法 - Google Patents
一种程序流监控方法 Download PDFInfo
- Publication number
- CN103383566B CN103383566B CN201310253760.9A CN201310253760A CN103383566B CN 103383566 B CN103383566 B CN 103383566B CN 201310253760 A CN201310253760 A CN 201310253760A CN 103383566 B CN103383566 B CN 103383566B
- Authority
- CN
- China
- Prior art keywords
- subroutine
- circulation
- program flow
- supervising
- identification code
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 16
- 238000012544 monitoring process Methods 0.000 claims abstract description 17
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 abstract description 5
- 230000004913 activation Effects 0.000 abstract description 2
- 230000006835 compression Effects 0.000 abstract description 2
- 238000007906 compression Methods 0.000 abstract description 2
- 125000004122 cyclic group Chemical group 0.000 abstract description 2
- 230000000737 periodic effect Effects 0.000 abstract description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种程序流监控方法,解决发动机控制软件内多个子程序运行监测的问题。现代发动机的控制都是通过发动机控制器来进行电子控制,发动机控制器的控制软件内一般由多个子程序组成。由于发动机的运行是一种周而复始的循环工况,如四冲程发动机就是在进气、压缩、做功和排气四个冲程中不断循环工作。因此对应的控制软件也是在一个对应发动机四冲程运行循环中对一系列的子程序进行循环调用,实现控制功能。每个循环内的子程序先后调用顺序和调用次数是固定不变的。<!--1-->
Description
技术领域
本发明涉及一种程序流监控方法。
背景技术
发动机控制器的软件程序日趋复杂,往往由多个子程序组成,在一定的时间周期循环内,有多个子程序需要按一定的先后顺序和次数执行,如何监测这些子程序是否按正确的顺序和次数执行,以便在软件发生运行时故障的时候能够及时检出,尚未引起开发人员的重视。
发明内容
本发明的目的在于提供一种程序流监控方法,使得发动机控制器软件内的子程序未能按照预定顺序和次数执行的时候,能够及时检测到,从而使软件能够采取故障应对措施。
每次循环之前,产生一个随机数,每个子程序内增加一个子程序识别码;利用MD5算法将随机数和子程序识别码进行计算,如果任何一个子程序未按预期执行,MD5算法计算的结果将与预期值不同,从而发现错误。
具体技术方案如下:
一种程序流监控方法,采用如下步骤:
(1)程序流每次循环之前,产生一个随机数;
(2)程序流中每个子程序内增加一个子程序识别码;
(3)利用MD5算法将随机数和子程序识别码进行计算;
(4)如果任何一个子程序未按预期执行,MD5算法计算的结果将与预期值不同,从而发现错误。
进一步地,所述程序流为发动机控制器的软件程序,由多个子程序组成,在一定的时间周期循环内,有多个子程序按一定的先后顺序和次数执行并进行循环。
进一步地,步骤(3)具体包括如下步骤:
(3-1)循环中第一个被调用的子程序执行结束前,将此随机数加上自己的识别码后进行MD5运算,运算结果为一个128位的数字;
(3-2)第二个被调用的子程序执行结束前,将前一个子程序MD5运算后获得的128位数字加上自己的识别码后进行MD5运算,生成一个新的128位数字,
(3-3)以此类推,直到此次循环内最后一个被调用的子程序执行结束,得到此次循环内最后一次计算出来的128位数字。
进一步地,步骤(4)具体包括如下步骤:
(4-1)控制软件在循环结束前调用一个监控子程序;
(4-2)此监控子程序按此循环内各子程序预期的调用顺序和次数对随机数和各子程序对应的识别码进行MD5运算;
(4-3)将上一步骤计算出来的128位数字和前面通过各个子程序运算出来的128位数字进行比较;
(4-4)如果两个数字一致,则说明此次循环内各子程序按预期进行了调用;
(4-5)如果两个数字不一致,则说明此次循环内子程序的调用顺序或次数发生了错误。
进一步地,步骤(1)中由控制软件产生一个随机数.
进一步地,步骤(2)中所述各个子程序之间识别码各不相同。
进一步地,步骤(2)中识别码用一个字节或多个字节的数字来表示,其取值范围覆盖所有在该循环内需要进行监控的子程序个数。
进一步地,对循环内各个子程序先后调用顺序和调用次数进行监控
进一步地,MD5算法是为本领域常用信息摘要算法,用于确保信息传输完整一致。
与目前现有技术相比,本发明可以有效检测到子程序漏执行、多执行、执行顺序不正确的错误;方案简便,易于实现。
附图说明
图1为本发明程序流监控流程图
具体实施方式
下面根据附图对本发明进行详细描述,其为本发明多种实施方式中的一种优选实施例。
一种程序流监控方案,解决发动机控制软件内多个子程序运行监测的问题。现代发动机的控制都是通过发动机控制器来进行电子控制,发动机控制器的控制软件内一般由多个子程序组成。由于发动机的运行是一种周而复始的循环工况,如四冲程发动机就是在进气、压缩、做功和排气四个冲程中不断循环工作。因此对应的控制软件也是在一个对应发动机四冲程运行循环中对一系列的子程序进行循环调用,实现控制功能。每个循环内的子程序先后调用顺序和调用次数是固定不变的。
为了对循环内各个子程序先后调用顺序和调用次数进行监控,对每个子程序安排一个识别码,各个子程序之间识别码各不相同,具有唯一性。识别码可以用一个字节或多个字节的数字来表示,其取值范围覆盖所有在该循环内需要进行监控的子程序个数。
每次循环开始时,控制软件产生一个随机数,随后循环中第一个被调用的子程序执行结束前,将此随机数加上自己的识别码后进行MD5运算,运算结果为一个128位的数字。第二个被调用的子程序执行结束前,将前一个子程序MD5运算后获得的128位数字加上自己的识别码后进行MD5运算,生成一个新的128位数字。以此类推,直到此次循环内最后一个被调用的子程序执行结束,得到此次循环内最后一次计算出来的128位数字。
然后控制软件在此次循环结束前调用一个监控子程序,此监控子程序按此循环内各子程序预期的调用顺序和次数对随机数和各子程序对应的识别码进行MD5运算,将计算出来的128位数字和前面通过各个子程序运算出来的128位数字进行比较。如果两个数字一致,则说明此次循环内各子程序按预期进行了调用;如果两个数字不一致,则说明此次循环内子程序的调用顺序或次数发生了错误。
MD5算法是一种信息摘要算法,用于确保信息传输完整一致,主流编程语言普遍已有MD5实现。本发明利用此算法来对程序流进行监控,确保程序流与预期一致。
为更好的说明本方案,以下为本发明的一个实例说明:
假设一个发动机控制循环包含子程序A、子程序B和子程序C,设置子程序A的识别码为1,子程序B的识别码为2,子程序C的识别码为3。另外设计一个监控子程序M。一个完整的发动机控制循环需要依次调用子程序A、子程序B和子程序C各一次,然后调用监控子程序M进行监控。如图1所示:
调用子程序A时,子程序A除了完成原本发动机需要的控制功能之外,还对此次循环生成的随机数R加上识别码1进行MD5计算,得到一个128位的数字MD5_A。调用子程序B时,子程序B除了完成原本发动机需要的控制功能之外,还对输入的MD5_A加上识别码2进行MD5计算,得到一个128位的数字MD5_B。调用子程序C时,子程序C除了完成原本发动机需要的控制功能之外,还对输入的MD5_B加上识别码3进行MD5计算,得到一个128位的数字MD5_C。
监控子程序M只按各子程序预期的运行顺序和次数进行MD5的校验计算。本例中监控子程序M将随机数R加上识别码1进行第一次MD5计算,得到的128位数字加上识别码2进行第二次MD5计算,得到的128位数字加上识别码3进行第三次MD5计算,最后得到一个128位的数字MD5_M。
比较MD5_C和MD5_M这两个数字是否相等,如果相等则说明各子程序在此次循环中是按照预期的子程序A->子程序B->子程序C,且每个子程序只运行一次的方式执行的。如果不相等,则说明各子程序在此次循环中调用顺序或次数出现了错误。
上面结合附图对本发明进行了示例性描述,显然本发明具体实现并不受上述方式的限制,只要采用了本发明的方法构思和技术方案进行的各种改进,或未经改进直接应用于其它场合的,均在本发明的保护范围之内。
Claims (8)
1.一种程序流监控方法,其特征在于,采用如下步骤:
(1)程序流每次循环之前,产生一个随机数;
(2)程序流由多个子程序组成,每个子程序内增加一个子程序识别码;
(3)利用MD5算法将随机数和子程序识别码进行计算;
(4)如果任何一个子程序未按预期执行,MD5算法计算的结果将与预期值不同,从而发现错误;
步骤(3)具体包括如下步骤:
(3-1)循环中第一个被调用的子程序执行结束前,将此随机数加上自己的识别码后进行MD5运算,运算结果为一个128位的数字;
(3-2)第二个被调用的子程序执行结束前,将前一个子程序MD5运算后获得的128位数字加上自己的识别码后进行MD5运算,生成一个新的128位数字,
(3-3)以此类推,直到此次循环内最后一个被调用的子程序执行结束,得到此次循环内最后一次计算出来的128位数字。
2.如权利要求1所述的程序流监控方法,其特征在于,所述程序流为发动机控制器的软件程序,由多个子程序组成,在一定的时间周期循环内,有多个子程序按一定的先后顺序和次数执行并进行循环。
3.如权利要求1或2所述的程序流监控方法,其特征在于,步骤(4)具体包括如下步骤:
(4-1)控制软件在循环结束前调用一个监控子程序;
(4-2)此监控子程序按此循环内各子程序预期的调用顺序和次数对随机数和各子程序对应的识别码进行MD5运算;
(4-3)将上一步骤计算出来的128位数字和前面通过各个子程序运算出来的128位数字进行比较;
(4-4)如果两个数字一致,则说明此次循环内各子程序按预期进行了调用;
(4-5)如果两个数字不一致,则说明此次循环内子程序的调用顺序或次数发生了错误。
4.如权利要求1或2所述的程序流监控方法,其特征在于,步骤(1)中由所述控制器的软件程序产生一个随机数。
5.如权利要求1或2所述的程序流监控方法,其特征在于,步骤(2)中各个子程序之间识别码各不相同。
6.如权利要求1或2所述的程序流监控方法,其特征在于,步骤(2)中识别码用一个字节或多个字节的数字来表示,其取值范围覆盖所有在该循环内需要进行监控的子程序个数。
7.如权利要求1或2所述的程序流监控方法,其特征在于,对循环内各个子程序先后调用顺序和调用次数进行监控。
8.如权利要求1或2所述的程序流监控方法,其特征在于,MD5算法是为本领域常用信息摘要算法,用于确保信息传输完整一致。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310253760.9A CN103383566B (zh) | 2013-06-24 | 2013-06-24 | 一种程序流监控方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310253760.9A CN103383566B (zh) | 2013-06-24 | 2013-06-24 | 一种程序流监控方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103383566A CN103383566A (zh) | 2013-11-06 |
CN103383566B true CN103383566B (zh) | 2015-10-28 |
Family
ID=49491389
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310253760.9A Active CN103383566B (zh) | 2013-06-24 | 2013-06-24 | 一种程序流监控方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103383566B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105955115A (zh) * | 2016-05-10 | 2016-09-21 | 重庆长安汽车股份有限公司 | 一种汽车整车控制器的程序流监控方法和装置 |
CN106776236B (zh) * | 2017-02-07 | 2020-05-08 | 北京龙鼎源科技股份有限公司 | 监测程序的执行的方法和装置 |
CN108646708B (zh) * | 2018-05-02 | 2020-05-22 | 阳光电源股份有限公司 | 一种程序流监控方法及系统 |
CN110135198B (zh) * | 2019-02-18 | 2021-06-22 | 北京车和家信息技术有限公司 | 程序流监控方法、系统及车辆 |
CN111427723B (zh) * | 2020-03-19 | 2023-05-30 | 阳光电源股份有限公司 | 基于AutoSAR的程序流监控方法及应用装置 |
CN118277200B (zh) * | 2024-04-02 | 2024-09-03 | 上海利氪科技有限公司 | 软件程序流监控方法、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1154771A (zh) * | 1994-07-29 | 1997-07-16 | 荷兰皇家·Ptt·有限公司 | 校验数据序列的方法和装置 |
US7168065B1 (en) * | 1999-03-09 | 2007-01-23 | Gemplus | Method for monitoring program flow to verify execution of proper instructions by a processor |
CN101166087A (zh) * | 2007-09-30 | 2008-04-23 | 奇瑞汽车有限公司 | 一种用于汽车诊断通讯中的安全验证方法 |
CN101533367A (zh) * | 2008-03-14 | 2009-09-16 | 英业达股份有限公司 | 分析程序错误的方法及其判读数据的制作方法 |
CN101763291A (zh) * | 2009-12-30 | 2010-06-30 | 中国人民解放军国防科学技术大学 | 一种程序控制流错误检测方法 |
US20130145219A1 (en) * | 2011-12-02 | 2013-06-06 | Fisher Controls International Llc | Program flow control monitoring routines, related methods and systems |
-
2013
- 2013-06-24 CN CN201310253760.9A patent/CN103383566B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1154771A (zh) * | 1994-07-29 | 1997-07-16 | 荷兰皇家·Ptt·有限公司 | 校验数据序列的方法和装置 |
US7168065B1 (en) * | 1999-03-09 | 2007-01-23 | Gemplus | Method for monitoring program flow to verify execution of proper instructions by a processor |
CN101166087A (zh) * | 2007-09-30 | 2008-04-23 | 奇瑞汽车有限公司 | 一种用于汽车诊断通讯中的安全验证方法 |
CN101533367A (zh) * | 2008-03-14 | 2009-09-16 | 英业达股份有限公司 | 分析程序错误的方法及其判读数据的制作方法 |
CN101763291A (zh) * | 2009-12-30 | 2010-06-30 | 中国人民解放军国防科学技术大学 | 一种程序控制流错误检测方法 |
US20130145219A1 (en) * | 2011-12-02 | 2013-06-06 | Fisher Controls International Llc | Program flow control monitoring routines, related methods and systems |
Non-Patent Citations (1)
Title |
---|
一种检测程序控制流故障的方法;李红兵 等;《微计算机信息》;20100605(第16期);第1-3页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103383566A (zh) | 2013-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103383566B (zh) | 一种程序流监控方法 | |
CN109271331B (zh) | 日志的生成方法、装置、计算机设备及存储介质 | |
CN112783705B (zh) | 一种测试方法、装置、系统、芯片和电子设备 | |
WO2019095580A1 (zh) | 测试方法、装置、计算机设备及可读存储介质 | |
US11281441B2 (en) | Method and apparatus for compiling source code object, and computer | |
US10331513B2 (en) | Zero overhead code coverage analysis | |
CN113709126A (zh) | 网络协议安全模糊测试方法、装置、设备以及存储介质 | |
CN112152825B (zh) | 家电设备的多级模组升级方法、装置和电子设备 | |
CN105912447B (zh) | 一种嵌入式程序执行顺序的监控方法 | |
CN104321660A (zh) | 用于生成与电池组相关联的诊断测试文件的系统和方法 | |
CN107766247B (zh) | Bootloader的测试方法、装置及可读存储介质 | |
CN110908869B (zh) | 一种应用程序数据监控方法、装置、设备及储存介质 | |
JP6434840B2 (ja) | 電子制御装置 | |
CN106647612A (zh) | 一种基于状态关系图的plc漏洞挖掘方法 | |
CN117667747A (zh) | 一种基于autosar的ecu模糊测试方法和系统 | |
CN114779913B (zh) | 一种自适应调整工作频率的复位方法和芯片 | |
CN114186219B (zh) | 口令破解的异构系统集成方法及系统 | |
CN104063317B (zh) | 一种指令诊断方法 | |
US11188378B2 (en) | Management of control parameters in electronic systems | |
CN105607991A (zh) | 一种基于异步线程的测试方法和装置 | |
CN115828244A (zh) | 一种内存泄露检测方法、装置及相关设备 | |
US11017085B2 (en) | Methods and nodes for anomaly detection in computer applications | |
Panjiyar et al. | Defending against code injection attacks using Secure Design Pattern | |
CN111427723B (zh) | 基于AutoSAR的程序流监控方法及应用装置 | |
CN116048978B (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 |