[go: up one dir, main page]

CN103383566B - 一种程序流监控方法 - Google Patents

一种程序流监控方法 Download PDF

Info

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
Application number
CN201310253760.9A
Other languages
English (en)
Other versions
CN103383566A (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.)
Chery Automobile Co Ltd
Original Assignee
SAIC Chery Automobile Co Ltd
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 SAIC Chery Automobile Co Ltd filed Critical SAIC Chery Automobile Co Ltd
Priority to CN201310253760.9A priority Critical patent/CN103383566B/zh
Publication of CN103383566A publication Critical patent/CN103383566A/zh
Application granted granted Critical
Publication of CN103383566B publication Critical patent/CN103383566B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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算法是为本领域常用信息摘要算法,用于确保信息传输完整一致。
CN201310253760.9A 2013-06-24 2013-06-24 一种程序流监控方法 Active CN103383566B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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