CN1552018A - 软件编译器的嵌入系统的坚固记录系统 - Google Patents

软件编译器的嵌入系统的坚固记录系统 Download PDF

Info

Publication number
CN1552018A
CN1552018A CNA018051855A CN01805185A CN1552018A CN 1552018 A CN1552018 A CN 1552018A CN A018051855 A CNA018051855 A CN A018051855A CN 01805185 A CN01805185 A CN 01805185A CN 1552018 A CN1552018 A CN 1552018A
Authority
CN
China
Prior art keywords
type
function
message
program
parameters
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.)
Pending
Application number
CNA018051855A
Other languages
English (en)
Inventor
J��W��·��˹
J·W·路易斯
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips Electronics NV
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 Koninklijke Philips Electronics NV filed Critical Koninklijke Philips Electronics NV
Publication of CN1552018A publication Critical patent/CN1552018A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/423Preprocessors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • G06F8/437Type checking

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

预处理脚本分析记录语句的消息目录。例如,各记录可包含不同的记录消息、格式串、及变量的定位器加说明。脚本然后生成定义包含在消息目录中的各种类型的消息的首标文件。然后它为各种类型的消息定义宏。当程序员编写代码时,他/她使用宏格式而不是标准语言格式。编译时这些宏归结为对通用记录调用的具体实例所需的相应参数的类型与数目的函数的调用。在最终编译代码时,当参数的数目与类型不匹配时,编译器将生成出错消息。

Description

软件编译器的嵌入系统的坚固记录系统
发明背景
发明领域
本发明涉及用于定义计算机软件中的记录操作的机构而更具体地涉及用于记录需要固定数目与/或类型的参数的语句的这种机构,这种机构是诸如导致在编译时间检验参数的数目与类型的。
背景技术
记录是用来描述出现在进行中的软件进程中的检查事件的所有方式的通用术语。熟悉的实例为在通过调制解调器连接到计算机上时步骤的跟踪。随着连接中各步骤的完成,记录系统输出消息给连接终端。如果出现错误,便立即有可能确定在该错误停止它之前进程已进行多远。通常记录导致生成下一消息,能任选地以压缩标记形式存储消息直到以后用可读的正文替换这些标记时读取它们。
软件通常是编写成使得相同的代码能被不同地点中说不同语言的用户使用的。不是将备择的检查语句嵌入可执行软件本身中,而是用消息目录来存储备择的语言格式。将软件编写成只生成检查语句的代码或标准形式,然后可用目录转换它们。转换可在读取记录输出时进行(假定标准输出是临时存储的)或者在生成标准形式之后立即转换并在输出或存储装置上输出它。
在一些系统中,用来生成检查输出的语句可采用固定数目与通用类型的参数。例如,语句可采用格式化串及诸如整数、串、浮点值等各式各样类型中任何参数的固定长度系列。这些语句可以是对操作系统专用的或者是程序语言的一部分。如果参数的数目是固定的,例如,不是所有都可使用的。如果参数可以是任何类型的,即使特定格式语句与它们不一致,也难以保证已准确地编程了这些调用。这是因为在编译期间,不检验这些参数的类型与/或数目对所定义的特定记录事件是否适当。唯一的选择是通过执行来测试记录语句,但这是费事且通常不现实的。最终,运行时间测试并不提供何处出现记录错误的方便指示。较新的面向对象(00)的语言提供一种解决方法,但在诸如嵌入系统等一些系统中,可将软件作者的至少某些代码部分限制在非00语言上。
发明概述
本发明通过提供不是对语言而是对各种类型的记录语句的依赖于消息目录的预处理脚本(script)来解决先有技术难于避免的上述问题。该消息目录包含各定义在一个记录中的消息结构。例如,各记录可包含不同的记录消息、格式串、及变量的占位器加说明。当编译器的记录语句采用通用语句、后面跟随格式语句与固定数目参数的形式时,后者是适当的。
本发明使用带预处理脚本的消息目录,前者分析消息目录来确定各记录所需的参数数目。然后脚本生成为消息目录中所定义的各种消息定义宏的首标文件。程序员在编写代码时使用宏格式而不是标准语言格式。编译时宏分解成对包含标准语言格式中的调用的函数的调用。然而,该函数是对特定消息所需的类型与/或参数数专用的。在最终编译代码时,预处理器已用相应数目与/或类型的参数的函数调用替换了所有的宏。从而在这一情况中,当参数的数目与/或类型不匹配时,编译器将生成出错消息。
下面参照示例性图结合一定较佳实施例描述本发明,以便能更全面地理解它。参照附图,强调所示出的详细描述是用示例方式的并且只是为了本发明的较佳实施例的说明性讨论的目的,并且是为了提供认为是本发明的原理与概念方面的最有用与容易理解的描述而提出的。这一方面,并不试图示出比对本发明的基本理解所必需的更详细的发明的结构细节,结合附图作出的描述使熟悉本技术的人员清楚在实践中如何实施本发明的若干形式。
附图描述
图1为按照本发明的实施例的用于检验记录调用错误的进程的流程图。
图2为表示构成记录调用的先有技术的框图。
图3为按照本发明的实施例构成记录调用的方法的框图。
图4为说明按照本发明的实施例使用宏的自动生成来提供可在编译时揭示的诊断信息的构成记录调用的方法的框图。
参见图1,程序员通过增加生成新记录输出的调用定期编写新源码或更新老源码。如果这些调用具有以前不包含在老代码中的类型,或者如果正在起草新程序,则存在新的消息类型(S10)并在步骤S20中生成新的或更新的消息目录。消息目录是记录消息类型的表。在本发明的实施例中,消息目录具有下表中所示的格式。
Rec. Name Format F1 F2 F3… Fn Descr.
在步骤S25中定义采用各种类型的消息所需的参数的数目与/或类型的函数。这些函数可以是对一类记录消息类型通用的。例如,对于需要一个参数的消息可有相应的函数,对于需要两个参数的消息可有另一函数,等。作为替代,对于参数的数目与类型的各种组合可具有独立的函数。
在步骤S30中,分析消息目录并生成为消息目录中的各种类型的记录消息建立宏定义的首标(即,每一记录一个)。各宏是定义成调用适当函数的。在步骤S40中将得出的新首标文件加在新源码文件上或替换老的首标文件,并将基于新消息类型的任何新源码加在源码上。然后在步骤S50中运行编译器并在步骤S60中检查由参数数目或类型不匹配导致的任何错误及采取适当的纠正行动。
C文件的一部分中的首标的示例如下。
/*Log message indexes*/
#define LoggingVersion      0x0001
#define VideoSyncLost       0x0002
#define OutputLocked        0x0004
/*Log call macros*/
#define LOG_LoggingVersion(v0)(vlog1Event(LoggingVersion,(v0)))
#define LOG_VideoSyncLostO(vlog0Event(VideoSyncLost))
#define LOG_OutputLocked(v0,v1,v2(vlog3Event(OutputLocked,(v0),(v1),(v2)))
然后程序员便能使用其代码中的记录调用宏。例如,可出现下述语句。
                 LOG_OutputLocked(2,0,1)
在编译期间它被下述语句替换
                (vlog3Event(0x0004,(2),(0),(1)))
从而,当编译器在预编译步骤中遇到这些语句之一时,它便用在记录调用宏定义中所定义的函数调用替换该宏正文。换言之,LOG_LoggingVersion(XYZ)的每一次出现都将改变成vlog1Event(0xNNNN,XYZ)其中“0xNNNN”为特定记录事件的消息号而“XYZ”为宏语句中使用的参数。
注意这里的要点在于在记录调用宏定义中根据参数的数目使用不同的函数。这些函数实际上执行生成记录输出所需的步骤。各函数包含适当的记录语句,但和在先有技术中一样在函数定义内,该或这些语句在参数的数目与类型方面是相同的。通过将参数传递过与所要求的参数的数目与类型相应的函数,便将相应的函数束缚在宏定义中所要求的记录事件的类型上,使得编译器在编译期间能检验宏语句中的参数的数目与类型。这在运行时间之前得出出现不正确的语法的精确位置的指示。
下面是函数定义的示例清单。下面的代码定义采用四个参数的记录函数。
{
 logMsg(format[msgNumber],(int)v0,(int)v1,(int)v2,
    0,0,0);
}
在上面的代码序列中,“format”为消息格式的数组,“magNumber”是格式数组的下标,而“logMag”是采用固定类型(第一个为串而其余六个为整数)的固定数目的参数(7个)的标准系统记录调用。
现在参见图2与3,为了比较生成记录输出的先有技术与当前策略,图2中示出先有技术策略而图3中示出当前策略。在先有技术方法中,利用通常的机构可获得通用调用100:作为操作系统设备的函数库,或对编程语言通用的语句。通用调用100具有若干参数,是否使用一个参数取决于语句的实例中所使用的其它参数。在本创造性方法中,通用调用100是通过定义成对具体的记录操作(诸如将记录数据放在队列上)类别具有特定的参数数目与/或相应类型的函数150间接讶问的。函数定义包含适当的通用语法并将函数的参数适当的确定路由到通用调用100的参数上。在程序执行时程序员的代码中使用带有其适当的参数组140的函数调用130来生成适当的记录事件。作为中介函数的结果,参在编译时间而不是在运行时间检验参数的数目与/或类型。
参见图4,通过将函数调用的路由确定为通过宏及自动化宏定义进程,记录消息系统能提供可用于错误检验的否则是冗长的诊断设备。
例如,可将文件名与行号有条件地附加在记录消息上。(注意:在发布编译命令时能指定编译器选项。通常编译器选项之一是为开发或生产版本编译。这是条件“有条件地”所指称的。换言之,生成两组宏定义。一组包含附加的诊断信息,文件与行号,而另一组不包含。然后用预编译器条件指示语句-if/then/else-包裹这两组宏定义。如果是为开发编译代码,便使用带附加信息的组。如果是为生产版本编译代码,便使用另一组,因为用户对附加信息不感兴趣)。这可通过令预处理器脚本在宏定义上附加文件名与行号的预编译器指示语句(诸如,#define LOG_LoggingVersion(v0)(vlog3Event(LoggingVersion,v0,__LINE__,__FILE__)))来完成。这无须程序员协助便能完成并为开发接通而为生产断开。这样,宏脚本210分析消息目录200来生成包含诊断信息的宏定义。
对于熟悉本技术的人员显而易见本发明不限于上文中示例性实施例的细节,而可以以其它特定形式实施本发明而不脱离其精神或主要属性。因此在所有方面都认为当前的实施例是说明性的而非限制性的,本发明的范围是用所附权利要求而不是用上文中的描述指定的,因此旨在将进入权利要求的等效物的含义与范围中的所有改变都包括在其中。

Claims (6)

1.一种编程操作的方法,包括下述步骤:
定义包含最终执行记录操作的语句的函数(150);
所述函数包含对特定的记录操作专用的至少一个数目与类型的至少一个参数(160);
所述语句是对数目与类型的至少一个的参数通用的;
在程序中调用所述函数,借此通过编译所述程序便可揭示对所述特定记录操作专用的数目与类型的所述至少一个之间的不匹配。
2.权利要求1中的方法,其中所述操作为记录操作。
3.一种带有包含下述各项的程序的软件介质:
带有在运行时间最终执行记录操作的语句的函数定义;
所述函数包含对特定记录操作专用的数目与类型的至少一个的至少一个参数;
所述语句是对数目与类型的至少一个的参数通用的;
所述程序调用所述函数,借此通过编译所述程序可以揭示对所述特定记录操作专用的数目与类型的所述至少一个之间的不匹配。
4.权利要求3中的软件介质,其中所述操作为记录操作。
5.一种编程记录脚本的方法,包括下述步骤:
定义相应的参数的数目与/或类型的函数,所述参数是传递给要求至少所述参数的程序语句的;
生成包含记录消息的类别的记录消息目录;
定义宏翻译编程语句到对所述消息目录起作用的所述函数的各自的一个中;
在程序中引用所述宏。
6.权利要求5中的方法,其中所述定义宏的步骤包含定义有条件地将文件名与/或行号附加在各自的记录消息上的宏。
CNA018051855A 2000-12-18 2001-12-10 软件编译器的嵌入系统的坚固记录系统 Pending CN1552018A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/739,517 US20020129335A1 (en) 2000-12-18 2000-12-18 Robust logging system for embedded systems for software compilers
US09/739,517 2000-12-18

Publications (1)

Publication Number Publication Date
CN1552018A true CN1552018A (zh) 2004-12-01

Family

ID=24972659

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA018051855A Pending CN1552018A (zh) 2000-12-18 2001-12-10 软件编译器的嵌入系统的坚固记录系统

Country Status (6)

Country Link
US (1) US20020129335A1 (zh)
EP (1) EP1417575A2 (zh)
JP (1) JP2004516574A (zh)
KR (1) KR20030015200A (zh)
CN (1) CN1552018A (zh)
WO (1) WO2002050674A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110928551A (zh) * 2019-11-29 2020-03-27 山东省国土测绘院 一种快速输入程序代码的方法

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7237234B2 (en) * 2001-12-13 2007-06-26 Texas Instruments Incorporated Method for selective solicitation of user assistance in the performance tuning process
US7305660B2 (en) * 2003-08-29 2007-12-04 International Business Machines Corporation Method to generate a formatted trace for an embedded device
US8874425B2 (en) * 2007-03-22 2014-10-28 The Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US20080235001A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing emulation decisions in response to software evaluations or the like
US20080235000A1 (en) * 2007-03-22 2008-09-25 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Implementing security control practice omission decisions from service emulation indications
US8495708B2 (en) * 2007-03-22 2013-07-23 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US9558019B2 (en) * 2007-03-22 2017-01-31 Invention Science Fund I, Llc Coordinating instances of a thread or other service in emulation
US8438609B2 (en) * 2007-03-22 2013-05-07 The Invention Science Fund I, Llc Resource authorizations dependent on emulation environment isolation policies
US9378108B2 (en) * 2007-03-22 2016-06-28 Invention Science Fund I, Llc Implementing performance-dependent transfer or execution decisions from service emulation indications
US8327324B1 (en) * 2008-09-29 2012-12-04 Emc Corporation Message logging system
US8458519B2 (en) * 2010-01-07 2013-06-04 International Business Machines Corporation Diagnostic data set component
US20110231820A1 (en) * 2010-03-19 2011-09-22 Aricent Inc. Exclusive logging
JP6662200B2 (ja) * 2016-05-30 2020-03-11 沖電気工業株式会社 情報処理装置、及びプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5121475A (en) * 1988-04-08 1992-06-09 International Business Machines Inc. Methods of dynamically generating user messages utilizing error log data with a computer system
US5287444A (en) * 1989-08-14 1994-02-15 International Business Machines Corporation Message processing system
CA2039365C (en) * 1991-03-28 2000-01-18 T. Dora Velissaropoulos Method and means for encoding storing and retrieving hierarchical data processing information for a computer system
US5778223A (en) * 1992-03-17 1998-07-07 International Business Machines Corporation Dictionary for encoding and retrieving hierarchical data processing information for a computer system
US5761510A (en) * 1995-11-07 1998-06-02 Microsoft Corporation Method for error identification in a program interface
US6044216A (en) * 1996-06-24 2000-03-28 Oracle Corporation Method and apparatus for implementing cursor variables for accessing data from database
US6119079A (en) * 1997-04-24 2000-09-12 Hewlett-Packard Company Method and structure for tokenized message logging system
US6009273A (en) * 1997-05-29 1999-12-28 Hewlett-Packard Company Method for conversion of a variable argument routine to a fixed argument routine
US6243862B1 (en) * 1998-01-23 2001-06-05 Unisys Corporation Methods and apparatus for testing components of a distributed transaction processing system
US6427228B1 (en) * 1999-05-12 2002-07-30 International Business Machines Corporation Combining a meta data file and java source code to dynamically create java classes and javabeans

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110928551A (zh) * 2019-11-29 2020-03-27 山东省国土测绘院 一种快速输入程序代码的方法

Also Published As

Publication number Publication date
EP1417575A2 (en) 2004-05-12
KR20030015200A (ko) 2003-02-20
WO2002050674A2 (en) 2002-06-27
US20020129335A1 (en) 2002-09-12
JP2004516574A (ja) 2004-06-03
WO2002050674A3 (en) 2004-02-26

Similar Documents

Publication Publication Date Title
US7484205B2 (en) Preprocessor-based source code instrumentation
US8732673B2 (en) Automated debugging system and method
US5758061A (en) Computer software testing method and apparatus
US7937692B2 (en) Methods and systems for complete static analysis of software for building a system
US6434742B1 (en) Symbol for automatically renaming symbols in files during the compiling of the files
US9710243B2 (en) Parser that uses a reflection technique to build a program semantic tree
US6978401B2 (en) Software application test coverage analyzer
US20080178149A1 (en) Inferencing types of variables in a dynamically typed language
US20020138788A1 (en) Computer software run-time analysis systems and methods
CN111736846B (zh) 一种面向动态分析的源代码插桩改进方法
CN1552018A (zh) 软件编译器的嵌入系统的坚固记录系统
US20080052695A1 (en) Method and system for compilation error isolation, optimization and resolution
US20080313208A1 (en) Apparatus, system, and method for automated context-sensitive message organization
US20060212847A1 (en) Type checker for a typed intermediate representation of object-oriented languages
US11119740B2 (en) Parsability of code snippets
CN121070314A (zh) 一种测试代码修复方法及相关设备
US6381736B1 (en) Method for compile-time type-checking of arguments for externally-specified format strings
US7624381B1 (en) Portable detection of start and completion of object construction
CN118733007B (zh) 基于Python的代码自动生成和自动检查方法
US6178547B1 (en) Method and apparatus for generating non-redundant symbolic debug information in computer programs
JPH03118635A (ja) ソースコード発展システム用増分コンパイラ
JP3266097B2 (ja) 非リエントラントプログラムの自動リエントラント化方法及びシステム
Krüger Elm-reduce: Delta debugging functional programs
Tran et al. Design and implementation of assertions for the common language infrastructure
Yedidia Incremental peg parsing

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication