CN102460396A - 计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法 - Google Patents

计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法 Download PDF

Info

Publication number
CN102460396A
CN102460396A CN2010800265163A CN201080026516A CN102460396A CN 102460396 A CN102460396 A CN 102460396A CN 2010800265163 A CN2010800265163 A CN 2010800265163A CN 201080026516 A CN201080026516 A CN 201080026516A CN 102460396 A CN102460396 A CN 102460396A
Authority
CN
China
Prior art keywords
parts
program
cua
cub
mistake
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
CN2010800265163A
Other languages
English (en)
Other versions
CN102460396B (zh
Inventor
D·凯瑟尔
M·哈尼伯格
M·贝奇勒
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.)
Bayerische Motoren Werke AG
Original Assignee
Bayerische Motoren Werke AG
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 Bayerische Motoren Werke AG filed Critical Bayerische Motoren Werke AG
Publication of CN102460396A publication Critical patent/CN102460396A/zh
Application granted granted Critical
Publication of CN102460396B publication Critical patent/CN102460396B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0718Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in an object-oriented system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • G06F11/0739Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in automotive or aircraft systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及计算机辅助地检测尤其是机动车中的由部件(CU1,CU2,...,CU12)构成的系统中一个或多个基于软件的程序运行中的错误的方法,为各部件(CU1,CU2,...,CU12)分别分配一个标志(i),相应运行的程序由程序标识(a,b)指定,部件(CU1,CU2,...,CU12)在程序运行中执行分配给其(CU1,CU2,...,CU12)的程序块,部件(CU1,CU2,...,CU12)至少部分地相互调用。在根据本发明的方法中,在一部件(CUB)被另一部件(CUA)调用时,程序标识(a,b)及错误参数(f)被另一部件(CUA)传输到该部件(CUB),错误参数(f)说明先前在程序运行中是否已识别到错误。如果部件(CUA,CUB)在执行分配给其的程序块时识别到错误,则该部件(CUA,CUB)存储包含程序标识(a,b)、部件(CUA,CUB)的标志(i)和错误状态(e)的主动错误条目,错误状态说明所识别的错误是否是程序运行中的第一个错误。如果调用另一部件的部件(CUA)从该另一部件(CUB)接收到该另一部件(CUB)的标志(p),则该部件(CUA)存储包含程序标识(a,b)、该部件(CUA)的标志(i)和该另一部件(CUB)的标志(p)的被动错误条目。在程序运行中存储一个或多个主动或被动错误条目的部件(CUB)在程序运行中将程序标识(a,b)和该部件(CUB)的标志返回给调用该部件(CUB)的部件(CUA)至少一次。

Description

计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法
技术领域
本发明涉及一种计算机辅助地检测(尤其是机动车中)由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法。
背景技术
在很多技术领域中,尤其是在汽车工程领域中,相应技术设备或车辆的要执行的功能中的软件成分变得越来越复杂。通常,软件程序在由多个部件构成的分布式系统中被执行,其中在这里以及在下文中,术语“部件”应作宽泛的理解并且可以包括每个具有程序运行中一个或多个功能性的单元。尤其地,部件是具有技术功能性的技术部件或具有相应软件的技术装置(如控制器)或该装置的一部分。部件同样也可以涉及程序语言意义上的在系统内执行程序块的函数或对象。部件尤其还可以是已知标准AUTOSAR意义上的软件组件。
软件错误在程序运行中总是在运行时大多零星地发生。此外,这样的错误的原因和影响经常不是依赖于时间的。因此,在出现软件错误时进行纠错很难,因为软件错误不能被再现,其发生的条件不能被追溯并且通常不清楚应在那里寻找错误的原因。
在车辆诊断领域中,目前认识的错误以所谓DTC(诊断故障码:Diagnostic Trouble Codes)的形式存储在相应技术部件或控制器中。但是在由此产生的错误条目之间不存在功能联系,并且错误只能通过出现的时间点来建立联系。
发明内容
因此,本发明的任务在于以适当的方式检测软件程序运行中的错误,以便随后能够对所检测到的错误进行改进的诊断来找出错误原因。
该任务通过按照权利要求1的方法或按照权利要求9的方法或按照权利要求11的系统或按照权利要求13的诊断设备来实现。从属权利要求中给出了本发明的扩展方案。
在根据本发明的方法中,为系统的部件分别分配一个标志,并且通过程序标识来指定相应运行的程序。其中在相应程序运行中,部件执行分配个其的程序块,并且部件在程序运行中还至少部分地相互调用。
在根据本发明的方法中,在一部件调用另一部件时,程序标识以及错误参数从这一部件传输到这另一部件,其中错误参数说明在程序运行中已经识别到错误。如果一部件在分配给其的程序块运行中识别到错误,则该部件存储主动的错误条目,该主动的错误条目包含程序标识、部件的标志以及错误状态,错误状态说明所识别的错误是否是程序运行中的第一个错误。主动的错误条目因此涉及在该错误条目也存储在其中的部件中出现的错误。
如果在根据本发明的方法中一个已经调用另一部件的部件接收到该另一部件的标志,则这一个部件存储被动的错误条目,该被动的错误条目包含程序标识、这一个部件的标志以及该另一部件的标志。通过被动的错误条目相应地指定按照该错误条目的错误是并非该错误条目存储在其中的部件的另一部件中出现的错误。被动的错误条目说明以前在程序调用链中出现错误,其中通过存储该另一部件的标志可以追踪其中出现错误的调用链。
根据本发明,存储程序运行中一个或多个主动的或被动的错误条目的部件在程序运行中将程序标识和部件标志至少返回给调用该部件的那个部件一次。以该方式,在程序运行中确保错误条目的传播以对其追踪。
根据本发明的方法的特征在于:通过相应生成的主动的和被动的错误条目以及在部件相互调用中传输适当的信息,软件错误可以被追踪,并且还可以识别相应的软件错误是程序运行中的第一个错误还是可能由第一个错误引起的潜在后续错误。
在本发明的一优选方式中,各个部件是经由相应接口相互通信的控制器或控制器零件,其中主动的和被动的错误条目被存储在控制器的预定存储区中。其中一个有利的应用情形是在一机动车中联网的控制器中或多个相互通信的机动车中软件程序的运行。
在本发明的另一优选方式中,程序标识包括程序在其上被启动的触发部件的标志以及程序的相应启动时间。
在根据本发明的方法的另一实施方式中,如果在部件执行程序块之后在随后执行的程序块中没有出现错误,则程序标识和参数从该部件调用过的部件返回给该部件,其中参数显示这个随后执行的程序块的无错误性,并且在该部件中接收到该参数时,在该部件中不存储被动的错误条目。以该方式进在相应的部件中适当地反馈在执行分配给其的程序块之后没有出现错误并且因此不必在部件中存储被动的错误条目。该参数因此代替被调用的部件在出现错误时返回的标记。
在根据本发明的另一变形方案中,至少部分地在程序运行中对于部件的每个调用在该部件中存储调用条目。以该方式还可以检测程序运行中无错误地运行的调用链。优选地,部件中的调用条目包含调用过该部件的部件的标志。以该方式还可以重构正确运行的程序块的调用链。其中存在以下可能性:从程序运行中第一个错误的出现开始,在相应部件中存储调用条目。在可能的情况下,甚至在程序整个运行期间存储调用条目。
在根据本发明的方法的另一特别有利的实施方式中,部件中各自的错误条目(即主动的或被动的错误条目)通过包括多个值的字段来描述,其中在该字段中指定程序标识,并且该字段还包含指定存储该错误条目的部件的标志的第一值以及指定其中出现错误的部件(对于主动的错误条目,相当于存储错误条目的部件)的第二值以及说明错误条目是主动的错误条目还是被动的错误条目的第三值,其中对于主动的错误条目,第三值还指定错误是否是程序运行中的第一个错误。其中表述“第一值”、“第二值”和“第三值”仅仅指定值的相应类型,而并不必然表明相应值在字段中所位于的位置。
在根据本发明的方法的其中程序标识由触发部件的标志和启动时间来确定的变形方案中,用于描述错误条目的字段包含用于指定程序标识的两个值,其中一个值表示触发部件的标志,另一个值表示启动时间。
除了上述用于检测错误的方法之外,本发明还涉及用于处理利用该方法检测到的错误的方法。其中,所存储的主动的和被动的错误条目被读出,并且对于每个程序标识,由相应的主动的和被动的错误条目生成和输出错误树,其中在该错误树中至少包含先后调用的部件的调用链,这些先后调用的部件含至少一个具有主动错误条目的部件。其中在错误树中部件被标明在程序运行中在相应部件中是没有出现错误还是出现第一个错误还是出现潜在后续错误。由于该信息,可以以适当的方式追踪错误树中各个错误如何关联。其中在第一个错误后出现的后来的错误是潜在后续错误,并且通过错误树尤其说明相应的后续错误可能源自哪个初始错误或源自哪个其他潜在后续错误。如果在错误检测中还应当包含上述调用条目,则错误树在可能的情况下还包含其中所有部件已经无错误地执行其程序块的调用链。
用于重构错误树的方法的另一变形方案基于通过由上述字段指定的错误条目检测错误。其中错误树通过以下方式生成:从每个具有主动的错误条目的部件出发逐步地通过错误条目的字段的第一值和第二值确定相应的前后调用部件的调用链。
除了上述方法之外,本发明还涉及由部件构成的系统,该系统尤其是在机动车中,其中该系统被构造为使得在一个或多个基于软件的程序运行中利用上述用于检测错误的方法确定错误。
此外,本发明还涉及具有这样的系统的机动车。
而且,本发明还涉及用于处理利用上述方法检测到的错误的诊断设备,其中诊断设备被构造为使得利用该设备执行上述用于处理相应检测到的错误的方法。
附图说明
以下借助于附图详细介绍本发明的实施例。
在附图中:
图1示出了按照根据本发明的方法的一实施方式在第一部件调用第二部件中信息交换的示意图;
图2示出了由部件构成的系统及其交互作用的示意图,以其为基础介绍根据本发明的方法的一实施方式;
图3至12示出了示例性地示出图2所示系统中的程序运行及其中所使用的基于根据本发明方法一实施方式的错误检测的示意图;
图13示出的示意图表示了对在按照图3至12的程序运行中所检测的错误的读出及基于此按照根据本发明的方法的一实施方式生成错误树。
具体实施方式
以下基于机动车中由多个控制器构成的分布式系统介绍根据本发明的方法的实施方式,其中由各个控制器执行的功能借助于软件来实现。其中观察软件程序的运行,在该运行中,各个控制器相互调用,其中按照程序运行,在一控制器中相应程序功能结束后,另一控制器被调用。控制器是指权利要求1中所述的部件,并且在后面也被称为部件。
各个控制器为了通信而具有特定的接口,并且相互通过机动车的总线系统通信。控制器可以是车辆中用于执行功能性的任意单元,例如是电子发动机控制装置、安全气囊控制装置、(例如用于座椅调节的)伺服电动机的控制装置、汽车中空调机的控制装置、汽车中显示单元的控制装置等。该系统中部件上的程序运行例如是触发基于为汽车中个人所存储的预先编程的座椅调节来调节座椅的各个自动座椅调节伺服电动机。
在由部件构成的上述分布式系统中软件程序的运行中存在以下问题:不存在适当的机构来在程序运行时检测出现的软件错误,使得可能追踪错误以确定各个错误的原因或触发者。根据本发明的下面介绍的实施方式,检测软件错误并将其存储在各个部件的错误存储器中,使得在以后读出错误时可以生成适当的错误树。本发明因此一方面包括以适当的方式在车辆中检测软件错误的方法,另一方面包括在车外将所检测的软件错误组合为错误树的方法。
图1一般性地示出了进行调用的控制器CUA(CU=控制单元:Control Unit)和被调用的控制器CUB之间的通信。在下面,进行调用的控制器也被称为第一控制器或第一部件,被调用的控制器也被称为第二控制器或第二部件。下面从以下情形出发:每个部件能由一个独特的标志(例如UUID(UUID=通用唯一标识符:Universal UniqueIdentity)或软件ID)来标识,并且在程序运行中出现一部件对另一部件的调用。此外还存在适当的机构来通过部件在程序运行中将所识别到的软件错误存储在部件的错误存储器中。而且,在这里所描述的实施方式中,观察部件的同步调用,但是本发明类似地也可以应用于非同步调用。
根据图1,在第一部件CUA调用第二部件CUB的情况下,参数三元组(a,b,f)作为附加参数被传输。其中参数a表示最初触发运行的程序的哪个部件的标志。如果程序在部件CUA上开始,则参数a与部件CUA的标志一致。参数b指示程序在触发部件中被启动的时间,即汽车中相应客户功能基于该程序被启动的时间。参数a和b的组合因此表征程序的当前运行,并且该组合对应于权利要求1中所述的程序标识。参数f是错误参数,并且说明先前在程序运行中是否已经在一部件中出现错误。如果先前没有识别到错误,则错误参数被设置为0,而如果出现了错误,则参数在程序的后面运行中被设置为1。
在被调用的部件CUB已经完成相应的程序功能之后,将参数r以及上述参数a和b形式的回应返回到第一部件CUA。其中只要在部件CUB中没有识别到错误并且其他后来调用的部件也没有向该部件通知出现错误,回应值r就始终设置为0。在所有其他情形下,参数r包含部件CUB的标志作为值。
在程序运行中,在各个部件的错误存储器中生成相应的错误条目,其中主动的错误条目和被动的错误条目都被存储在错误存储器中。其中如果在相应的部件本身中出现错误则产生主动的错误条目,而如果一部件从另一部件接收到另一部件的标志作为回应值r则产生被动的错误条目。因此,被调用的部件的标志始终作为回应值被传输,只要在该部件本身中出现了错误或者只要被调用的部件从对其进行调用的部件接收到不等于0的回应值的话。
在以下进一步介绍的图5至12中,部件的相应错误条目作为具有方括号中的五个值的向量被给出,其中一般地,向量的第一个值用a表示,第二个值用b表示,第三个值用i表示,第四个值用p表示,第五个值用e表示,如图5中相应示出的那样。一般地,因此错误条目可以被描述为向量[a,b,i,p,e]。其中a又对应于最初触发程序运行的部件,b对应于程序在触发部件上启动的启动时间。而i表示正好存储相应错误条目的部件的标志。通过参数p确定错误来源。如果部件本身识别到软件错误,则在这里录入该部件自己的标志。如果在所观察的部件从由其调用的部件所接收的回应值r中传输被调用的部件的标志,则该标志被用于参数p。因此通过参数p说明是否存在在所观察的部件中本地出现的错误的主动的错误条目。
通过参数e说明错误类型。如果在前后相继的部件的调用链中第一次发现软件错误(“初始错误”),则e在相应的部件中被设置为1。然后,在调用下一部件时参数f被设置为1,并且在所有后续的部件调用中保持为1。如果部件已经以f=1被调用,则在被调用的部件中识别到错误的情况下,e被设置为2。由此表示出现的错误是潜在的后续错误。如果由被调用的部件将错误通知给进行调用的部件(即被调用的部件的标志作为参数r被返回),则要进行被动的错误存储条目,其中e被设置为0。该错误条目因此表明已经由另一部件发现了错误。在设置被动的错误条目的情况下,相应的部件还在其先前还没有传输回应值r≠0的情况下将其自己的标志作为回应值r返回到在前的部件。被动的错误条目的生成是必须的,以便后来在生成错误树的情况下能生成部件的调用顺序。
图2以由十二个控制器CU1、CU2、...、CU12构成的系统为例示出了基于功能调用链的程序运行,其中调用在触发部件CU1中同步进行。其中,程序运行内的调用通过相应的箭头表示,为了简明清晰的目的仅仅以附图标记P指示了这些箭头中的一些。可以看出:程序运行在作为触发部件的部件CU1上启动。该部件调用四个部件CU2、CU3、CU4和CU5。然后,部件CU3调用部件CU7至CU8,然后部件CU8调用部件CU11。此外,部件CU5调用部件CU9和CU10,然后部件CU10调用部件CU12。在图2中的程序运行中,在部件CU3、CU7、CU10、CU11和CU12中程序块工作中出现由相应的锯齿形箭头Z表示的错误。
借助于图2的部件的系统和所示的程序运行,现在介绍用于基于相应错误条目以及上述参数交换(图1)检测软件错误的一个实施方式。在下文中,数字01、02、...、12分别表示相应部件CU1、CU2、...、CU12的标志。而字母t表示程序启动时刻,即部件CU1触发程序的时刻。
根据图3,部件CU1以参数a=01、b=t和f=0调用部件CU2。根据图4,部件CU2响应于调用发送回应值r=0以及触发部件的标志01和触发时间t,因为在部件CU2中没有出现错误并且该部件不再调用后续的部件。根据图5,触发部件CU1调用部件CU3。在部件CU3中本地地出现错误。因此生成错误条目[01,t,03,03,1]。参数p被设置为03,因为错误本地地在部件CU3中出现。参数e被设置为1,因为其是在程序运行中出现的第一个错误。在部件CU1调用部件CU3时,触发部件CU1的标志01以及触发时间t被传输,它们然后作为错误条目中的前两个值,如图5中通过箭头P’所示的那样。因为现在在部件CU5中出现错误,所以除了触发部件CU1的标志01和触发时间t之外,现在参数f=1也被传送到部件CU7。然后,被调用的部件CU7执行其程序功能,其中本地又出现错误。因此生成错误条目[01,t,07,07,2],其中通过值p=07表明涉及的是本地错误。而通过e=2表明所出现的错误不是程序运行中的第一个错误,这意味着其可能涉及可能源自另一部件的错误的潜在后续错误。
如在图6中所示,部件CU7在执行其程序功能之后除了触发部件CU1的标志01和触发时间t之外还反馈值r=07,因为在部件CU7中出现错误。于是在部件CU3中生成错误条目[01,t,03,07,0],其中通过p=07和e=0表明涉及源自由部件CU7返回的错误的被动的错误条目。然后,部件CU8被部件CU3调用。其中,除了触发部件的标志01和触发时间t之外还传输参数f=1。在部件CU8中,在程序执行时没有出现错误。然后,部件CU8将触发部件的标志01、触发时间t以及参数f=1在部件CU11的调用的情况下传输给该部件。在部件CU11中又出现本地错误。因此在部件CU11中产生主动的错误条目[01,t,11,11,2]。其中e=2表明在部件CU12中涉及潜在后续错误。
如图7中所示,由于CU12中出现的错误,除了触发部件的标志01和触发时间t之外,部件CU11的标志11也被返回给部件CU8。部件CU8又生成[01,t,08,11,0]形式的被动的错误条目。因此,除了触发部件的标志01和触发时间t之外,部件CU8的标志08也被返回给部件CU3。类似地,于是在部件CU3中生成被动的错误条目[01,t,03,08,0]之后将部件CU3的标志03与触发部件的标志01和触发时间t一起返回给部件CU1。因此在CU1中生成被动的错误条目[01,t,01,03,0]。
根据图8,触发部件CU1调用部件CU4,并且传输其标志01、触发时间t和参数f=1。因为在部件CU4中没有出现错误并且程序从那里不会进一步继续,所以根据图9,除了触发部件的标志01和触发时间t之外,从部件CU4还返回参数r=0到CU1。因此在部件CU1中不生成进一步的错误条目。
根据图10,部件CU1调用部件CU5,部件CU5无错误地执行其程序功能性并且然后调用部件CU9,部件CU9同样无错误地执行其程序功能。其中,触发部件的标志01、触发时间t和f=1又被传输。因为在该程序链中没有出现错误,所以在部件CU1、CU5和CU9中也不产生主动的错误条目。
在图11中表现了相应参数r=0从部件CU9返回到部件CU5。此外,图11还示出了部件CU5对部件CU10的调用,其中触发部件的标志01和触发时间t以及参数f=1被传输。因为在部件CU10中出现本地错误,所以在那里存储错误条目[01,t,10,10,2]。部件CU10然后调用部件CU12,并且又传输触发部件的标志01、触发时间t以及参数f=1。然后在部件CU12中在程序执行时出现另一本地错误,从而在那里存储主动的错误条目[01,t,12,12,2]。
如图12中所示,在执行部件CU12的程序功能之后,由于在部件CU12中出现的错误,除了触发部件的标志01和触发时间t之外还返回部件CU12的标志12到部件CU10。因为参数r不等于0,所以现在在部件CU10中生成形式为[01,t,10,12,0]的被动的错误条目。由于CU10中的错误条目,除了触发部件的标志01和触发时间t之外,参数r=10也被传输到部件CU5。因为参数r又不等于0,所以在部件CU5中也存储相应的被动的错误条目[01,t,05,10,0]。因为这个被动的错误条目,所以现在除了触发部件的标志01和触发时间t之外,参数r=05也被返回到部件CU1。然后由于r≠0,所以在部件CU1中也生成形式为[01,t,01,05,0]的被动的错误条目。
在图12中,程序执行然后结束。图12因此示出了在上述程序运行中存储在各个部件中的所有错误条目。这些错误条目然后由相应的诊断设备从部件的错误存储器中读出。然后生成相应的错误树,如后面将借助于图13描述的那样。
在读出错误条目之后,首先得到以下用于各个部件的错误条目的列表:
CU1:[01,t,01,03,0][01,t,01,05,0]
CU2:-
CU3:[01,t,03,03,1][01,t,03,07,0][01,t,03,08,0]
CU4:-
CU5:[01,t,05,10,0]
CU6:-
CU7:[01,t,07,07,2]
CU8:[01,t,08,11,0]
CU9:-
CU10:[01,t,10,10,2][01,t,10,12,0]
CU11:[01,t,11,11,2]
CU12:[01,t,12,12,2]
在上面的列表中,所有具有e=2的错误条目(表示潜在后续错误)以斜体写出。此外,说明程序运行中第一个错误的错误条目(即对于其,e=1成立)以粗体印刷。该错误条目被存储在部件CU3中。为了生成错误树,首先确定包含本地错误条目(即在程序运行时在其自身中识别到错误)的那些部件的相应调用链作为入口点(Einstiegspunkt)。这按照上面的列表是所有包含参数e不等于0的至少一个错误条目的所有部件。根据上面的列表是部件CU3、CU7、CU10、CU11和CU12。
从具有至少一个e≠0的错误条目的部件的标志出发,然后通过以下方式构成相应的调用链:对于各个部件寻找包含各自部件的标志作为错误条目中第四个值的那些部件。也就是说,从各个部件中错误条目的第三个值i出发寻找包含第四个值对应于相应条目的第三个值的错误条目的部件。对于部件CU12于是得到:部件CU10包含这样的错误条目,即[01,t,10,12,0]。然后以找到的部件类似地进行,即又寻找从刚找到的部件的错误条目出发包含第四个值对应于刚找到的部件的错误条目的第三个值的错误条目的部件。这一直继续,直到最后到达触发部件CU1。根据上面的例子,因此从所找到的部件CU10出发然后寻找包含的条目具有标志10作为第四个值的部件。这根据上面的列表是部件CU5的情形。从这个部件出发寻找包含的条目具有标志05作为第四个值的部件。这是触发部件CU1。以该方式适当地追溯本地错误链。
根据图13,因此对于各个部件CU3、CU7、CU10、CU11和CU12的标志03、07、10、11和12得到调用链A1至A5。这些调用链然后在顺序上反转并且组合为错误树FB,如通过箭头P”所示。通过存储在部件中的错误条目的序列得到调用序列。例如在部件CU1中首先存储CU3的错误条目,然后存储CU5的错误条目。由此得到:CU1首先调用部件CU3,然后调用CU5。在该错误树中,从最上层级中的标志01出发构成到根据被反转的调用链在下面的层级中存在的标志的连接。在图13的错误树中,因此标志03和05在调用链A1到A5的反转方向上连接到标志01。错误树FB的第二层级因此包含标志03和05。同样地,然后寻找下一层级中的标志。其中根据图13的调用链得到:标志03不仅与标志07连接,还与标志08连接。而标志05只与标志10连接。也就是说,错误树FB从标志03分支到标志07和08。而错误树从标志05只分支到标志10。对于后面的层级得到:标志08与标志10连接,标志10与标志12连接。而标志07已经处于相应调用链A2的开头。因此错误树从标志08出发只分支到标志11,从标志10出发只分支到标志12。
因为对于各个部件已知在该部件中是否没有出现错误(e=0)或第一次出现错误(e=1)或出现潜在后续错误(e=2),所以该信息在错误树FB中被适当地编码。这在图13的错误树中通过以下方式表明:加粗印刷的标志03指示在程序运行中第一次出现错误的部件,斜体印刷的标志07、10、11和12指示其中出现潜在后续错误的部件,正常印刷的标记01、05和08指示其中没有出现错误的部件。
如从上述实施例中可以看出的那样,利用所述的以适当的方式在程序运行中对相应错误条目的存储,可以生成错误树,从错误树可以读出潜在后续错误可能是由在前的哪个错误产生的。其中在图13中尤其可以看出:部件CU7和CU11中的错误的原因可能在于部件CU3中的错误,部件CU10和CU12中的错误与部件CU3、CU7和CU11中的错误无关。
根据本发明的方法的上述实施方式可以以适当的方式改变。尤其可以检测所有部件调用。在该情形下,对于每个部件调用在部件中进行相应的条目,该条目在该意义上不表示错误条目,而仅仅表明该部件被调用过。根据前面所述的错误条目格式,这样的条目例如可以通过以下方式来指定:包含被调用部件的标志作为第三和第四个值并且包含值e=0作为第五个值。其中第一个或第二个值又对应于触发部件的标志01或触发时间t。为了确保无错误地运行的调用链的完整重构,对于每个调用还必须在被调用的部件中存储进行调用的部件的标志。
根据上述改变,一方面存在以下可能性:所有调用总是从程序启动时就被记录。但是在一可替代的方案中也可以规定:所有调用链的记录只在第一个错误情形后才启动,即在参数f的值为1时。在该情形下,不提供任何关于在出现第一个错误之前的调用链的信息,但是与从程序启动开始就检测调用的情况相比所需要的存储容量更少。
上述用于检测错误和生成错误树的方法具有一系列优点。尤其地,利用该方法提供了有说服力的错误图像,其中功能相关的软件错误可以被总结。除了功能关联之外还区分软件错误的第一次出现以及可能由此产生的潜在后续错误。因此确保偶尔的软件错误能更好地被追溯和再现。该方法本身是简单和有效的。在部件中不必保存任何状态信息。只需要为错误信息的存储提供存储容量。方法持续地工作,并且因此不依赖于错误事故。因此确保了在错误情形下车辆中的总线通信不提高并且因此总线负载和变动保持确定性。

Claims (13)

1.一种用于计算机辅助地检测由部件(CU1,CU2,...,CU12)构成的系统中一个或多个基于软件的程序运行中的错误的方法,该系统尤其是在机动车中,其中为各部件(CU1,CU2,...,CU12)分别分配一个标志(i),并且相应运行的程序通过程序标识(a,b)来指定,部件(CU1,CU2,...,CU12)在程序运行中执行分配给其(CU1,CU2,...,CU12)的程序块,并且部件(CU1,CU2,...,CU12)至少部分地相互调用,其特征在于,
在一部件(CUB)被另一部件(CUA)调用时,程序标识(a,b)以及错误参数(f)被所述另一部件(CUA)传输到这一部件(CUB),其中错误参数(f)说明先前在程序运行中是否已经识别到错误;
如果部件(CUA,CUB)在执行分配给其的程序块时识别到错误,则该部件(CUA,CUB)存储主动错误条目,该主动错误条目包含程序标识(a,b)、该部件(CUA,CUB)的标志(i)和错误状态(e),错误状态说明所识别到的错误是否是程序运行中的第一个错误;
如果调用另一部件的部件(CUA)从该另一部件(CUB)接收到该另一部件(CUB)的标志(p),则该部件(CUA)存储被动错误条目,该被动错误条目包含程序标识(a,b)、该部件(CUA)的标志(i)和该另一部件(CUB)的标志(p);
在程序运行中存储一个或多个主动或被动错误条目的部件(CUB)在程序运行中将程序标识(a,b)和该部件(CUB)的标志返回给调用该部件(CUB)的部件(CUA)至少一次。
2.根据权利要求1所述的方法,其特征在于,部件(CU1,CU2,...,CU12)包括经由相应接口相互通信的控制器和/或控制器零件,其中主动错误条目和被动错误条目被存储在控制器的预定存储区中。
3.根据前述权利要求之一所述的方法,其特征在于,程序标识(a,b)包括启动程序的触发部件(CU1)的标志(a)以及启动时间(b)。
4.根据前述权利要求之一所述的方法,其特征在于,如果在部件(CUA)执行程序块之后在随后执行的程序块中没有出现错误,则程序标识(a,b)和参数(r)被从该部件(CUA)调用的部件(CUB)返回到该部件(CUA),其中参数(r)表明所述随后执行的程序块的无错误性,并且在该部件(CUA)接收到该参数(r)的情况下在该部件(CUA)中不存储被动错误条目。
5.根据前述权利要求之一所述的方法,其特征在于,至少有时候在程序运行中对于部件(CUA,CUB)的每次调用在该部件(CUA,CUB)中存储调用条目。
6.根据权利要求5所述的方法,其特征在于,在整个程序运行期间或只有在程序运行中出现第一个错误后,在相应部件(CUA,CUB)中存储调用条目。
7.根据前述权利要求之一所述的方法,其特征在于,部件(CUA,CUB)中各自的主动或被动错误条目通过包括多个值的字段来描述,在该字段中指定程序标识(a,b),并且该字段还包含指定存储该错误字段的部件(CUA,CUB)的标志(i)的第一值(i)以及指定出现该错误的部件(CUA,CUB)的第二值(p)和说明该错误条目是被动错误条目还是主动错误条目的第三值(e),其中对于主动错误条目,第三值(e)还指定该错误是否是程序运行中的第一个错误。
8.根据权利要求7所述的方法,其特征在于,在该字段中包含用于指定程序标识的两个值(a,b),其中一个值(a)表示触发部件的标志,而另一个值(b)表示启动时间。
9.一种用于处理由根据前述权利要求之一所述的方法检测到的错误的方法,其特征在于,读出所存储的主动错误条目和被动错误条目,并且对于每个程序标识(a,b)由相关的主动错误条目和被动错误条目生成和输出错误树(FB),其中在该错误树中至少包含前后相继地被调用的部件(CU1,CU2,...,CU12)的调用链,这些前后相继地被调用的部件(CU1,CU2,...,CU12)包含至少一个具有主动错误条目部件(CU1,CU2,...,CU12),在该错误树(FB)中部件(CU1,CU2,...,CU12)被标明在相应部件(CU1,CU2,...,CU12)中在程序运行中是没有出现错误还是出现第一个错误还是出现后续的错误。
10.根据权利要求9所述的方法,其特征在于,利用根据权利要求7所述的方法检测错误,其中错误树(FB)通过以下方式生成:从具有主动错误条目的每个部件(CU1,CU2,...,CU12)出发分别逐步地通过错误条目的字段的第一值(i)和第二值(p)生成前后相继地被调用的部件(CU1,CU2,...,CU12)的调用链。
11.一种由部件(CU1,CU2,...,CU12)构成的系统,该系统尤其是在机动车中,其特征在于,所述系统被构造为使得以根据权利要求1至8之一所述的方法检测所述系统中一个或多个基于软件的程序运行中的错误。
12.一种机动车,其特征在于,所述机动车包括根据权利要求11所述的由部件(CU1,CU2,...,CU12)构成的系统。
13.一种用于处理由根据权利要求1至8之一所述的方法检测到的错误的诊断设备,其特征在于,所述诊断设备被构造为利用该诊断设备执行根据权利要求9或10所述的方法。
CN201080026516.3A 2009-06-27 2010-06-08 计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法 Active CN102460396B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102009030774.5A DE102009030774B4 (de) 2009-06-27 2009-06-27 Verfahren zur rechnergestützten Erfassung von Fehlern beim Ablauf von einem oder mehreren softwarebasierten Programmen in einem System aus Komponenten
DE102009030774.5 2009-06-27
PCT/EP2010/057977 WO2010149489A1 (de) 2009-06-27 2010-06-08 Verfahren zur rechnergestützten erfassung von fehlern beim ablauf von einem oder mehreren software-basierten programmen in einem system aus komponenten

Publications (2)

Publication Number Publication Date
CN102460396A true CN102460396A (zh) 2012-05-16
CN102460396B CN102460396B (zh) 2016-03-02

Family

ID=42647434

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080026516.3A Active CN102460396B (zh) 2009-06-27 2010-06-08 计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法

Country Status (4)

Country Link
US (1) US8943368B2 (zh)
CN (1) CN102460396B (zh)
DE (1) DE102009030774B4 (zh)
WO (1) WO2010149489A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106406276A (zh) * 2015-07-29 2017-02-15 罗伯特·博世有限公司 用于在控制设备中进行车载诊断的方法和设备

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120062064A (ko) * 2010-12-06 2012-06-14 현대자동차주식회사 자동차용 임베디드 소프트웨어 동적 분석 장치
EP3151122A1 (en) * 2015-10-02 2017-04-05 Siemens Aktiengesellschaft Method and apparatus for generating a fault tree
US10061670B2 (en) * 2015-12-28 2018-08-28 Siemens Aktiengesellschaft Method and apparatus for automatically generating a component fault tree of a safety-critical system
US10338986B2 (en) * 2016-10-28 2019-07-02 Microsoft Technology Licensing, Llc Systems and methods for correlating errors to processing steps and data records to facilitate understanding of errors
US10984352B2 (en) 2017-02-28 2021-04-20 International Business Machines Corporation Dynamic cognitive issue archiving and resolution insight
US10902357B2 (en) 2017-02-28 2021-01-26 International Business Machines Corporation Dynamic cognitive issue archiving and resolution insight
US10585737B2 (en) * 2017-02-28 2020-03-10 International Business Machines Corporation Dynamic cognitive issue archiving and resolution insight
IT201700050166A1 (it) * 2017-05-09 2018-11-09 St Microelectronics Srl Sistema di elaborazione, relativo circuito integrato, dispositivo e procedimento
KR101947911B1 (ko) * 2017-08-02 2019-02-13 재단법인 다차원 스마트 아이티 융합시스템 연구단 비표준 pid 획득 장치, 시스템 및 그 방법
DE102018200429A1 (de) * 2018-01-11 2019-07-11 Bayerische Motoren Werke Aktiengesellschaft Störungsbehandlung in einem System
CN114978880B (zh) * 2022-05-23 2024-02-13 南昌智能新能源汽车研究院 服务调用链追踪方法、系统、计算机及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997019403A1 (en) * 1995-11-17 1997-05-29 Mci Communications Corporation Hierarchical error reporting system
US5948107A (en) * 1997-05-28 1999-09-07 Intel Corporation Method of handling errors in complex inheritance hierarchies
US20030204804A1 (en) * 2002-04-29 2003-10-30 Petri Robert J. Providing a chain of tokenized error and state information for a call stack
CN101027647A (zh) * 2004-09-25 2007-08-29 罗伯特·博世有限公司 在计算机系统上执行计算机程序的方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19725916A1 (de) * 1997-06-19 1999-01-28 Daimler Benz Ag Rechnergestützte Diagnoseeinrichtung und Diagnoseverfahren für elektronisch gesteuerte Systeme
US7120901B2 (en) * 2001-10-26 2006-10-10 International Business Machines Corporation Method and system for tracing and displaying execution of nested functions
US7512738B2 (en) * 2004-09-30 2009-03-31 Intel Corporation Allocating call stack frame entries at different memory levels to functions in a program
US20060271771A1 (en) * 2005-05-31 2006-11-30 Microsoft Corporation Exception tagging
US7171337B2 (en) * 2005-06-21 2007-01-30 Microsoft Corpoartion Event-based automated diagnosis of known problems
US7681182B1 (en) * 2008-11-06 2010-03-16 International Business Machines Corporation Including function call graphs (FCG) generated from trace analysis data within a searchable problem determination knowledge base

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997019403A1 (en) * 1995-11-17 1997-05-29 Mci Communications Corporation Hierarchical error reporting system
US5948107A (en) * 1997-05-28 1999-09-07 Intel Corporation Method of handling errors in complex inheritance hierarchies
US20030204804A1 (en) * 2002-04-29 2003-10-30 Petri Robert J. Providing a chain of tokenized error and state information for a call stack
CN101027647A (zh) * 2004-09-25 2007-08-29 罗伯特·博世有限公司 在计算机系统上执行计算机程序的方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106406276A (zh) * 2015-07-29 2017-02-15 罗伯特·博世有限公司 用于在控制设备中进行车载诊断的方法和设备

Also Published As

Publication number Publication date
US20120096318A1 (en) 2012-04-19
WO2010149489A1 (de) 2010-12-29
DE102009030774B4 (de) 2020-01-30
CN102460396B (zh) 2016-03-02
DE102009030774A1 (de) 2010-12-30
US8943368B2 (en) 2015-01-27

Similar Documents

Publication Publication Date Title
CN102460396A (zh) 计算机辅助地检测由部件构成的系统中一个或多个基于软件的程序运行中的错误的方法
US8522204B2 (en) Method and apparatus for creating a user program for a safety controller
CN108629865A (zh) 故障日志的生成方法、装置、设备及存储介质
EP1956449A2 (en) Numerical controller
JP5714543B2 (ja) 自己監視機能を備えたコンピュータ、監視プログラム
CN103548059A (zh) 用于机动车的诊断装置和诊断方法
JP5518810B2 (ja) 車両制御装置、車両制御システム
US20110125364A1 (en) Method and system for diagnosing a malfunction of an automobile
CN102804090A (zh) 用于在机床上的简化的故障处理的方法和设备
US10909783B2 (en) Method of automatically generating vehicle test group identification information, program, electronic control unit, and vehicle
CN111805544A (zh) 机器人的控制方法及装置
CN109254898B (zh) 一种软件模块执行顺序监视方法及监视系统
CN105607585A (zh) 用于汽车生产与维修的方法与系统
CN114625106A (zh) 车辆诊断的方法、装置、电子设备及存储介质
CN113205485A (zh) 电梯故障自诊断图像显示方法、装置、计算机和存储介质
CN112306038A (zh) 一种检测方法、检测装置及诊断设备
CN114030439B (zh) 气囊控制器的配置方法、装置及计算机存储介质
Becker et al. Providing evidence for correct and timely functioning of software safety mechanisms
CN111847248B (zh) 控制器定位配置方法及设备
CN117389842B (zh) 一种程序流程监控系统及方法
CN114089623A (zh) 基于冗余可靠模块的故障处理方法、装置、设备及介质
JP2018169933A (ja) 作業支援方法及び作業支援装置
JP6085386B1 (ja) 基盤プログラム及び車両監視システム
CN114296752A (zh) 硬件识别方法、系统和可读存储介质
JP2006123831A (ja) 車両用電子制御装置及びダイアグ処理プログラム

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