可执行程序中未定义函数的检测方法及装置制造方法及图纸

技术编号:15746391 阅读:78 留言:0更新日期:2017-07-03 01:36
本申请提供一种可执行程序中未定义函数的检测方法及装置,方法包括:当检测到有共享库更新,获取为可执行程序配置的依赖项中的共享库的更新时间点,并将最近更新时间点作为依赖项的更新时间点;若可执行程序的更新时间点早于依赖项的更新时间点,获取可执行程序链接的共享库和对应的函数列表;针对函数列表中每个函数,若函数在可执行程序的源码或可执行程序链接的共享库中均未定义,生成报错消息。本申请在检测到有共享库更新时,若可执行程序的更新时间点早于为其配置的依赖项中的共享库的最近更新时间点,则检查对应的函数列表中的函数是否有定义,从而使技术员及时发现未定义函数问题,避免由更新共享库而引入其它错误,以提高项目开发效率。

Method and device for detecting undefined function in executable program

The invention provides a method and device for detecting, a function is not defined in the executable program method includes: when detected shared database updates, access to the executable configuration dependencies in shared library update time, and the last update time as more new time dependencies; if the update a little bit earlier in dependency update time executable program, access to shared libraries and lists the corresponding executable program links; for each function list function, if the function in the executable program source code or executable program links shared libraries are not defined, generate error messages. The application in the detection of the shared library is updated, if the executable program update time earlier than its configuration dependencies in a shared library recently updated in time, check the list of functions in the corresponding function are defined, so that the technician detect undefined function, avoid by update the shared library and introduce other errors, in order to improve the efficiency of project development.

【技术实现步骤摘要】
可执行程序中未定义函数的检测方法及装置
本申请涉及计算机
,尤其涉及一种可执行程序中未定义函数的检测方法及装置。
技术介绍
通常Linux系统中包含的程序代码文件有可执行程序和共享库,如果可执行程序的源码有调用共享库中的函数,则在可执行程序的配置文件中会指定链接该共享库,表示可执行程序直接链接该共享库,由于该共享库也可能有调用另一共享库中的函数,因此在该共享库的配置文件中也会指定链接另一共享库,此时表示可执行程序间接链接另一共享库。编译器在编译可执行程序的源码创建该可执行程序时,需要检查该可执行程序涉及的所有函数(包括源码中的函数、直接或间接链接共享库中的函数)是否有定义。在项目工程中的一个可执行程序直接链接共享库A和共享库B,在该可执行程序出现问题,需要修改可对应的源码时,技术人员可能会在直接链接的共享库A中新增对共享库B中函数(例如,函数1)的调用,而忘记在共享库A的配置文件中添加对共享库B的链接,以修复该可执行程序的问题,然后将项目工程的所有源码提交到代码服务器。当其他技术人员读取该项目工程的源码进行编译时,由于该可执行程序有链接共享库A和共享库B,因此编译对应的源码不会出现问题,而如果有另一可执行程序直接链接共享库A,而未直接或间接链接共享库B,由于共享库A有调用共享库B中的函数,因此,编译器在编译另一可执行程序,检查另一可执行程序涉及的所有函数是否有定义时,无法从直接或间接链接的共享库中找到函数1的定义,导致编译失败的问题。在相关技术中,要求技术人员在对某一源码修改后,必须将本地已编译创建的可执行程序和共享库全部删除,使编译器重新执行一遍所有源码的编译过程,确保每个共享库和可执行程序的源码都会被重新编译,从而能够当场发现找不到函数定义的问题,并进行问题定位,在相应的配置文件中添加指定链接的共享库,然后再将项目工程的源码提交到代码服务器以供其他技术人员使用。然而,在一个项目工程中,可执行程序和共享库的数量成百上千,如果技术人员每修改一个问题,就将本地的所有源码全部重新编译一遍,必将耗费很长的时间,降低了项目工程的开发效率。
技术实现思路
有鉴于此,本申请提供一种可执行程序中未定义函数的检测方法及装置,以解决现有实现方式会降低项目工程的开发效率的问题。根据本申请实施例的第一方面,提供一种可执行程序中未定义函数的检测方法,所述方法包括:当检测到有共享库更新时,获取为可执行程序预先配置的依赖项中的共享库的更新时间点,并将最近的更新时间点作为所述依赖项的更新时间点;若所述可执行程序的更新时间点早于所述依赖项的更新时间点,则获取所述可执行程序所链接的共享库,并获取所述可执行程序对应的函数列表;针对所述函数列表中的每个函数,若该函数在所述可执行程序的源码中或者所述可执行程序所链接的共享库中均未定义,则生成用于提示该函数未定义的报错消息,并显示所述报错消息。根据本申请实施例的第二方面,提供一种可执行程序中未定义函数的检测装置,所述装置包括:第一获取模块,用于当检测到有共享库更新时,获取为可执行程序预先配置的依赖项中的共享库的更新时间点,并将最近的更新时间点作为所述依赖项的更新时间点;第二获取模块,用于若所述可执行程序的更新时间点早于所述依赖项的更新时间点,则获取所述可执行程序所链接的共享库,并获取所述可执行程序对应的函数列表;检查模块,用于针对所述函数列表中的每个函数,若该函数在所述可执行程序的源码中或者所述可执行程序所链接的共享库中均未定义,则生成用于提示该函数未定义的报错消息,并显示所述报错消息。应用本申请实施例,当检测到有共享库更新时,网络设备可以针对每个可执行程序,获取为可执行程序预先配置的依赖项中的共享库的更新时间点,并将最近的更新时间点作为所述依赖项的更新时间点,若该可执行程序的更新时间点早于该依赖项的更新时间点,则获取该可执行程序所链接的共享库,并获取该可执行程序对应的函数列表,针对函数列表中的每个函数,若该函数在该可执行程序的源码中或者该可执行程序所链接的共享库中均未定义,则生成用于提示该函数未定义的报错消息,并显示该报错消息。基于上述实现方式,通过预先配置可执行程序的依赖项,使可执行程序能够实现对直接链接共享库的动态依赖,因此,在检测到有共享库更新时,如果依赖项中记录有该共享库,则即可确保该共享库的更新时间点即为依赖项最近的更新时间点,并且若可执行程序的更新时间点早于该最近的更新时间点,则触发可执行程序的重新编译过程,并检查对应的函数列表中的每个函数是否存在定义,如果有未定义的函数,显示报错消息,从而使技术人员能够及时发现未定义函数的问题,避免由于更新共享库而引入其它错误。该实现方式无须增加任何额外修改,便可通过现有的编译过程实现在有共享库更新时,检查出未定义函数的问题,简化了程序源码结构和编程过程,从而提高了项目工程的开发效率。附图说明图1为本申请根据一示例性实施例示出的一种可执行程序中未定义函数的检测方法的实施例流程图;图2为本申请根据一示例性实施例示出的一种网络设备的硬件结构图;图3为本申请根据一示例性实施例示出的一种可执行程序中未定义函数的检测装置的实施例结构图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。图1为本申请根据一示例性实施例示出的一种可执行程序中未定义函数的检测方法的实施例流程图,该可执行程序中未定义函数的检测方法可以应用于网络设备,所述网络设备可以是计算机、平板电脑、路由器等设备。如图1所示,该可执行程序中未定义函数的检测方法包括如下步骤:步骤101:当检测到有共享库更新时,获取为可执行程序预先配置的依赖项中的共享库的更新时间点,并将最近的更新时间点作为该依赖项的更新时间点。在执行步骤101之前,针对预先为可执行程序配置依赖项的过程,网络设备可以在项目工程的第一次编译过程中,针对项目工程中的每个可执行程序,读取该可执行程序对应的编译命令的参数,并对该参数进行反向解析,提取直接链接的共享库,并将提取到的共享库添加到依赖项中。从而,提取到的直接链接的共享库作为可执行程序的依赖文件被添加到了依赖项中,在可执行程序的第一次编译过程中即可实现依赖项的自动配置,并且不需要技术人员进行干预。其中,由于本文档来自技高网
...
可执行程序中未定义函数的检测方法及装置

【技术保护点】
一种可执行程序中未定义函数的检测方法,其特征在于,所述方法包括:当检测到有共享库更新时,获取为可执行程序预先配置的依赖项中的共享库的更新时间点,并将最近的更新时间点作为所述依赖项的更新时间点;若所述可执行程序的更新时间点早于所述依赖项的更新时间点,则获取所述可执行程序所链接的共享库,并获取所述可执行程序对应的函数列表;针对所述函数列表中的每个函数,若该函数在所述可执行程序的源码中或者所述可执行程序所链接的共享库中均未定义,则生成用于提示该函数未定义的报错消息,并显示所述报错消息。

【技术特征摘要】
1.一种可执行程序中未定义函数的检测方法,其特征在于,所述方法包括:当检测到有共享库更新时,获取为可执行程序预先配置的依赖项中的共享库的更新时间点,并将最近的更新时间点作为所述依赖项的更新时间点;若所述可执行程序的更新时间点早于所述依赖项的更新时间点,则获取所述可执行程序所链接的共享库,并获取所述可执行程序对应的函数列表;针对所述函数列表中的每个函数,若该函数在所述可执行程序的源码中或者所述可执行程序所链接的共享库中均未定义,则生成用于提示该函数未定义的报错消息,并显示所述报错消息。2.根据权利要求1所述的方法,其特征在于,所述获取所述可执行程序所链接的共享库,包括:从所述可执行程序对应的配置文件中读取指定链接的第一共享库,并将所述第一共享库确定为所述可执行程序直接链接的共享库;从所述第一共享库对应的配置文件中读取指定链接的第二共享库,并将所述第二共享库确定为所述可执行程序间接链接的共享库;将所述直接链接的共享库和所述间接链接的共享库确定为所述可执行程序所链接的共享库。3.根据权利要求2所述的方法,其特征在于,为可执行程序配置依赖项,包括:读取所述可执行程序对应的编译命令的参数;对所述参数进行反向解析,并提取直接链接的共享库;将提取到的共享库添加到所述依赖项中。4.根据权利要求1所述的方法,其特征在于,所述函数列表中记录有所述可执行程序的源码中的函数、所链接的共享库中的函数。5.一种可执行程序中未定义函数的检测装置,其特...

【专利技术属性】
技术研发人员:符志清
申请(专利权)人:杭州迪普科技股份有限公司
类型:发明
国别省市:浙江,33

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

1