具有可替换函数库的软件程序制造技术

技术编号:2841828 阅读:162 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了具有可替换函数库的软件程序。该软件程序包括函数调用。当程序在第一模式中被链接时,来自第一库的第一经编译例程被耦合到函数调用。否则,来自第二库的第二经编译例程被耦合到函数调用。第一经编译例程是在源代码例程中的参数被设置到第一值的情况下从源代码例程编译来的,第二经编译例程是在源代码例程中的参数被设置到第二值的情况下从源代码例程编译来的。第一经编译例程具有与第二经编译例程相同的功能再加上额外功能。

【技术实现步骤摘要】

本专利技术涉及具有可替换函数库的软件程序
技术介绍
为了评估现代产品在符合其规格方面的性能,测试和测量成为了产品开发和制造寿命周期的一个重要部分。执行这些测试的测试机器通常能够在计算机的控制下实现自动化,以对多种系统和/或组件执行各种测试中的一种或多种。用户可能需要根据需要编写软件程序,以利用这些测试机器执行这种测试。为了使软件编程者的工作较为轻松,测试机器的制造者通常会提供一个可用于软件程序中的通用函数库。和所有软件程序一样,如果必要的话,程序本身需要被测试和修改,以确保它按设计工作。找出和纠正程序中可能存在的差错被称为调试程序。在这项工作中,程序通常是在调试模式中被编译的,在这种模式中,额外的编程步骤被添加到程序,这些步骤向软件编程者提供用于识别任何差错的类别和程序位置的信息。这可能是且常常是一项耗时且成本很高的工作。一旦软件编程者确信程序正确工作并且准备好投入使用,程序就在没有用于调试的额外编程步骤的情况下被重新编译,以便程序执行其操作的速度增大。通常,软件编程者不会检查由库函数报告给软件程序的各种潜在的程序问题,例如栈溢出或差错。从而,虽然编程者可能相信程序正确工作,但在某些情况下它却并没有正确工作。此外,库函数之一的问题随后可能被制造者检测到,并且在之后软件版本中被纠正。于是,使用这个新版本的库函数可能使先前未被软件编程者或用户检测到的程序问题显露出来。
技术实现思路
在代表性实施例中,公开了一种软件程序,其包括函数调用。当程序在第一模式中被链接时,来自第一库的第一经编译例程被耦合到函数调用。否则,来自第二库的第二经编译例程被耦合到函数调用。第一经编译例程是在源代码例程中的参数被设置到第一值的情况下从源代码例程编译来的,第二经编译例程是在源代码例程中的参数被设置到第二值的情况下从源代码例程编译来的。第一经编译例程具有与第二经编译例程相同的功能再加上额外功能。在另一个代表性实施例中,公开了一对库,其包括第一库和第二库。第一库包括第一经编译例程,第二库包括第二经编译例程。第一经编译例程是在源代码例程中的参数被设置到第一值的情况下从源代码例程编译来的,第二经编译例程是在源代码例程中的参数被设置到第二值的情况下从源代码例程编译来的。第一经编译例程具有与第二经编译例程相同的功能再加上额外功能。在另一个代表性实施例中,公开了一种用于创建软件程序的方法。该方法包括指定链接程序的模式,其中,用于程序的源代码包括函数调用。当在指定模式的步骤中指定第一模式时,通过将来自第一库的第一经编译例程的目标代码耦合到程序的先前编译过的形式中的函数调用来创建程序的可执行形式。否则,通过将来自第二库的第二经编译例程的目标代码耦合到程序的先前编译过的形式中的函数调用来创建程序的可执行形式。第一经编译例程具有与第二经编译例程相同的功能再加上额外功能。当结合附图理解下面的详细描述时,这里给出的代表性实施例的其他方面和优点将会显现出来。附图说明附图提供了直观的图示,这些图示将被用来更充分地描述各种代表性实施例,并且能被本领域的技术人员用来更好地理解它们以及它们的内在优点。在这些附图中,类似的标号标识相应的元件。图1是各种代表性实施例中描述的测试系统的框图。图2A是各种代表性实施例中描述的用于将程序源代码组件变换为可执行软件程序的组件和进程的框图。图2B是各种代表性实施例中描述的被软件程序用于调用来自两个库之一的例程的组件和进程的框图。图3是各种代表性实施例中描述的第一和第二经编译例程的源代码例程的列表。图4是各种代表性实施例中描述的用于利用可替换库链接和运行程序的方法的流程图。具体实施例方式如附图中为说明而示出的,这里公开了用于软件程序的新颖技术,该软件程序包括对可替换库中的既可以在调试模式中编译也可以在操作模式中编译的函数的调用。调试模式编译的函数是在调试库中提供的,而操作模式编译的函数是在另一个库中提供的。然后,如果必要的话,在不重新编译软件程序的情况下,软件程序根据需要被链接或重新链接到调试库函数或操作模式库函数。在不改变和重新编译用户开发的软件程序的情况下,可以监视库函数调用的成功或失败。先前用于这种调试的技术依赖于激活和/或添加调试代码到用户开发的软件程序,随后重新编译软件程序,并且链接。在下面的详细描述和若干幅附图中,类似的元件用类似的标号标识。图1是各种代表性实施例中描述的测试系统100的框图。在图1中,测试系统100包括连接到被测设备(DUT)150的测试机器105。被测设备(DUT)可以是各种类型的电子组件150中的任何一种,或者任何其他类型的组件150,例如机械组件150。测试机器105包括计算机110和仪器115。图1中还示出在外部连接到计算机110的可选外部输出设备145。外部输出设备145例如可以是打印机145。计算机110连接到仪器115,并且通过设置执行测试测量的条件、开动测量并且收集测量结果来控制仪器115的操作。图1所示的仪器115可以代表单个仪器,例如伏特计、电流计等,或者可以代表能够进行多种测量和测量类型的个体仪器的组合。计算机包括中央处理单元(CPU)120、存储器125、输入设备130和内部输出设备140。输入设备130可以是键盘130,或者可以使用适合于光标操纵等的指取设备,例如笔、鼠标、轨迹点或触摸屏。内部输出设备140可以是监视器140。监视器140可以是单色的或彩色的。计算机110能够运行任何商业上可获得的操作系统中的一种或多种,例如DOS、Microsoft Windows的各种版本(Windows 95、98、Me、2000、NT、XP等)、Apple的MAC OS X、UNIX、Linux或其他合适的操作系统。在操作中,可执行软件测试程序135可以从存储器125或从图中未示出的外部源被加载到CPU 120中,所述测试程序135在这里可被称为软件测试程序135和测试程序135,在这里一般也可被称为软件程序135和程序135。在其他实现方式中,测试系统110可以包括多个CPU 120,这些CPU不是全都执行相同的测试函数,并且可以附接到其他输入/输出设备,并且可以不附接到图1所示各种输入/输出设备。图2A是各种代表性实施例中描述的用于将程序源代码组件205变换为可执行软件程序135的组件和进程200的框图。在图2A中,编译器215将程序源代码组件205编译为程序目标代码模块220。程序源代码组件205包括测试器函数调用210,在这里一般也将其称为函数调用210,它是对对测试机器105来说是标准的并且在这种函数的库中找到的函数的调用。这种函数的库一般是由测试机器105的制造者提供的,而程序源代码例程是由测试机器105的用户为了用户的特定目的而创建的。链接225将程序目标代码模块220与存根(stub)库250组合或链接,该存根库250如图2B所示可用来耦合库例程的目标代码。除了使用存根库250之外,可以使用其他技术来实现函数调用210,例如将经编译的测试器例程240a、240b直接耦合到程序135中的函数调用210。图2B是各种代表性实施例中描述的被软件程序135用于调用来自两个库235a、235b之一的例程的组件和进程的框图。参考图2A和图2B,链接器225以两种形式之本文档来自技高网...

【技术保护点】
一种软件程序,包括:    函数调用,    其中,    当所述程序在第一模式中被链接时:来自第一库的第一经编译例程被耦合到所述函数调用,    否则:来自第二库的第二经编译例程被耦合到所述函数调用,    其中,所述第一经编译例程是在源代码例程中的参数被设置到第一值的情况下从所述源代码例程编译来的,    其中,所述第二经编译例程是在所述源代码例程中的所述参数被设置到第二值的情况下从所述源代码例程编译来的,并且    其中,所述第一经编译例程具有与所述第二经编译例程相同的功能再加上额外功能。

【技术特征摘要】
US 2005-11-28 11/2878191.一种软件程序,包括函数调用,其中,当所述程序在第一模式中被链接时来自第一库的第一经编译例程被耦合到所述函数调用,否则来自第二库的第二经编译例程被耦合到所述函数调用,其中,所述第一经编译例程是在源代码例程中的参数被设置到第一值的情况下从所述源代码例程编译来的,其中,所述第二经编译例程是在所述源代码例程中的所述参数被设置到第二值的情况下从所述源代码例程编译来的,并且其中,所述第一经编译例程具有与所述第二经编译例程相同的功能再加上额外功能。2.如权利要求1所述的软件程序,其中,所述第一经编译例程的额外功能被配置为提供用于调试所述程序的信息。3.如权利要求1所述的软件程序,其中,所述程序被配置为在测试机器上运行。4.如权利要求1所述的软件程序,其中,所述程序被配置为测试组件。5.如权利要求1所述的软件程序,其中,所述程序被配置为在测试机器上运行并且被配置为测试组件。6.如权利要求1所述的软件程序,其中,当所述程序在所述第一模式被链接并且当所述程序的可执行形式被执行时对所述第一经编译例程的调用包括对存根库中的第一存根的调用,其中,所述第一存根在地址表中查找所述第一经编译例程的地址,然后将对所述第一经编译例程的所述调用重定向到该地址;否则,当所述程序在所述第二模式中被链接并且当所述程序的可执行形式被执行时对所述第二经编译例程的调用包括对存根库中的第二存根的调用,其中,所述第二存根在所述地址表中查找所述第二经编译例程的地址,然后将对所述第二经编译例程的所述调用重定向到该地址。7.一对库,包括包括第一经编译例程的第一库;包括第二经编译例程的第二库,其中,所述第一经编译例程是在源代码例程中的参数被设置到第一值的情况下从所述源代码例程编译来的,其中,所述第二经编译例程是在所述源代码例程中的所述参数被设置到第二值的情况下从所述源代码例程编译来的,并且其中,所述第一经编译例程具有与所述第二经编译例程相同的功能再加上额外功能。8.如权利要求7所述的库对,其中,所述第一经编译例程的额外功能被配置为提供用于调试调用所述第一经编译例程的程序的信息。9.如权利要求8所述的库对,其中,所述程序被配置为测试组件。10.如权利要求7...

【专利技术属性】
技术研发人员:艾伦赫伍德戴维斯
申请(专利权)人:安捷伦科技有限公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1