CN107643893B - 一种程序检测方法及装置 - Google Patents

一种程序检测方法及装置 Download PDF

Info

Publication number
CN107643893B
CN107643893B CN201610584497.5A CN201610584497A CN107643893B CN 107643893 B CN107643893 B CN 107643893B CN 201610584497 A CN201610584497 A CN 201610584497A CN 107643893 B CN107643893 B CN 107643893B
Authority
CN
China
Prior art keywords
library
function
identifier
target
header file
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
CN201610584497.5A
Other languages
English (en)
Other versions
CN107643893A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201610584497.5A priority Critical patent/CN107643893B/zh
Publication of CN107643893A publication Critical patent/CN107643893A/zh
Application granted granted Critical
Publication of CN107643893B publication Critical patent/CN107643893B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明实施例公开了程序检测方法,包括:读取目标程序;获取目标程序的头文件;确定头文件中声明的库函数与目标函数库中包含的库函数是否匹配;目标函数库为当前编译目标程序时使用的函数库;当确定出头文件中声明的库函数与目标函数库中包含的库函数不匹配时,则提示程序错误。本发明还公开了一种程序检测装置,从而实现了在库的头文件中插入特定检测代码来自动进行匹配检测,并提示库和相应头文件在使用时会出现不匹配的问题,解决了开发者需要花费较长的时间来排查库和相应头文件在使用时不匹配的问题,有助于快速定位库和相应头文件在使用时出现不匹配的问题,大大提高了软件项目开发效率。

Description

一种程序检测方法及装置
技术领域
本发明涉及计算机领域,尤其涉及程序检测方法以及程序检测装置。
背景技术
面向对象编程是一种计算机编程架构,开发人员在基于面向对象编程语言进行软件项目的开发过程中,例如基于C++(在C语言的基础上开发的一种面向对象编程语言)语言,C++库和相应头文件在使用时必须匹配。然而,在软件项目开发过程中由于以下几点原因:
1、在不同的项目开发中,库的编写方和使用方往往是不同的开发者;
2、库的使用方编译程序时没有联动的机制去同时更新库和头文件;
3、库交叉引用时,没有全部更新相关的库,比如库a使用了库b,而在库b发生变化时没有重新编译库a;等等。
容易出现C++库和相应头文件在使用时不匹配的情况,例如库的使用方使用了新库但旧的头文件,或者使用旧的库但新的头文件。C++库和相应头文件在使用时不匹配,容易导致以下问题:在函数个数发生变化的时候出现链接错误,或者在库中某个对象的大小发生变化的时候,比如增加或者删除了某些成员变量,运行时库的引用方分配的内存大小和实际库对象的大小不一致,导致程序运行时core掉。
当前,开发者不容易对上述出现的问题进行定位,也就是说需要花费较长的时间来排查问题,造成软件项目开发效率不高。
发明内容
本发明实施例所要解决的技术问题在于,提供一种程序检测方法以及程序检测装置,解决了开发者需要花费较长的时间来排查库和相应头文件在使用时不匹配的问题,提高了软件项目开发效率。
为了解决上述技术问题,本发明实施例第一方面公开了一种程序检测方法,包括:
读取目标程序;
获取所述目标程序的头文件;
确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配;所述目标函数库为当前编译所述目标程序时使用的函数库;
当确定出所述头文件中声明的库函数与目标函数库中包含的库函数不匹配时,则提示所述程序错误。
本发明实施例第二方面公开了一种程序检测装置,包括:
读取模块,用于读取目标程序;
获取模块,用于获取所述目标程序的头文件;
确定模块,用于确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配;所述目标函数库为当前编译所述目标程序时使用的函数库;
提示模块,用于当所述确定模块确定出所述头文件中声明的库函数与目标函数库中包含的库函数不匹配时,则提示所述程序错误。
本发明实施例第三方面公开了一种计算机存储介质,所述计算机存储介质存储有程序,所述程序执行时包括本发明实施例第一方面中的程序检测方法的全部步骤。
实施本发明实施例,通过读取目标程序,通过获取目标程序的头文件,确定头文件中声明的库函数与目标函数库中包含的库函数是否匹配;若匹配则可进行后续的程序编译,若不匹配则提示程序错误,从而实现了在库的头文件中插入特定检测代码来自动进行匹配检测,并提示库和相应头文件在使用时会出现不匹配的问题,解决了开发者需要花费较长的时间来排查库和相应头文件在使用时不匹配的问题,有助于快速定位库和相应头文件在使用时出现不匹配的问题,从而使得技术开发人员能够及时去解决不匹配的问题,大大提高了软件项目开发效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的程序检测方法的流程示意图;
图2是本发明提供的程序检测方法的另一实施例的流程示意图;
图3是本发明实施例提供的程序检测装置的结构示意图;
图4是本发明提供的程序检测装置的另一实施例的结构示意图;
图5是本发明实施例提供的确认模块的结构示意图;
图6是本发明提供的程序检测装置的另一实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1示出的本发明实施例提供的程序检测方法的流程示意图,包括如下步骤:
步骤S100:读取目标程序;
具体地,该目标程序为软件开发者为软件项目开发编写的程序,终端可以在编译该目标程序之前,读取待编译的该目标程序。
步骤S102:获取所述目标程序的头文件;
具体地,一般而言,每个C++程序通常由头文件(header files)和定义文件(definition files)组成。头文件作为一种包含功能函数、数据接口声明的载体文件,主要用于保存程序的声明(declaration)。终端读取到该目标程序后,可以解析该目标程序,并获取到该目标程序的头文件。
需要说明的是,本发明实施例以C++语言为例进行说明,但本发明实施例的保护范围不限定于针对C++语言,可以包括其它同样存在需要花费较长的时间来排查库和相应头文件在使用时不匹配的问题的面向对象编程语言。
步骤S104:确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配;所述目标函数库为当前编译所述目标程序时使用的函数库;
具体地,库开发人员在库发布之前都会将库(也可以为库文件)与头文件进行匹配,也就是说该头文件中声明的库函数与该库中包含的库函数是匹配的,例如该库中的库函数包含有与该头文件中声明的库函数一样的函数;然而在不同的项目中,原来与该头文件匹配的库可能会发生变化,以致当前编译该目标程序时使用的函数库(即本发明实施例中的目标函数库)没有包含与该头文件中声明的库函数一样的函数,那么该头文件中声明的库函数与目标函数库中包含的库函数就不匹配。当终端确定出该头文件中声明的库函数与目标函数库中包含的库函数不匹配时,执行步骤S106,否则可以执行步骤S108。
步骤S106:提示所述程序错误;
具体地,终端可以通过显示信息、播放语音等方式来提示该程序错误;可理解的是,该提示方式或内容可以为开发者预先设置的提示方式或内容,以便在终端提示该程序错误时,开发者可以获知库和相应头文件在使用时出现了不匹配的问题,然后可以迅速解决该问题。
步骤S108:继续对所述目标程序进行编译。
具体地,本步骤不限定于执行对该目标程序的编译,还可以按照开发者的需求来执行,例如再进行别的程序测试等等,本发明不作限制。
实施本发明实施例,通过读取目标程序,通过获取目标程序的头文件,确定头文件中声明的库函数与目标函数库中包含的库函数是否匹配;若匹配则可进行后续的程序编译,若不匹配则提示程序错误,从而实现了在库的头文件中插入特定检测代码来自动进行匹配检测,并提示库和相应头文件在使用时会出现不匹配的问题,解决了开发者需要花费较长的时间来排查库和相应头文件在使用时不匹配的问题,从而使得技术开发人员能够及时去解决不匹配的问题,有助于快速定位库和相应头文件在使用时出现不匹配的问题,大大提高了软件项目开发效率。
进一步地,本发明实施例中不同的函数库对应设有不同的标识;在步骤S104确定该头文件中声明的库函数与目标函数库中包含的库函数是否匹配之前,还可以包括:设置用于标识该头文件的第一标识,以及设置用于标识初始函数库的第二标识;其中,该第一标识与该第二标识关联匹配,该初始函数库中包含的库函数与该头文件中声明的库函数匹配;
具体地,该初始函数库即为库开发人员在库发布之前配置的与头文件匹配的库;该第一标识与该第二标识关联匹配,具体可以包括该第一标识与该第二标识有预设的对应关系,或者该第一标识与该第二标识相同,等等。那么,下面结合图2示出的本发明提供的程序检测方法的另一实施例的流程示意图,进一步说明本发明实施例程序检测的方法流程,包括如下步骤:
步骤S200:读取目标程序;
步骤S202:获取所述目标程序的头文件;
具体地,步骤S200和S202可以参考上述实施例中的步骤S100和S102,这里不再赘述。
步骤S204:查找用于标识所述头文件的第一标识;
具体地,该头文件预先对应设有用于标识该头文件的第一标识,例如可以预先在该头文件中定义一个宏,以用于标识该头文件的版本号;那么终端可以查找到该头文件的第一标识。
步骤S206:查找用于标识所述目标函数库的目标标识;
具体地,本发明实施例中的函数库都可以预先通过在函数库的实现文件中命名空间下定义一个全局整型变量的方式,来设置用于标识该函数库的标识,具体可以标识该函数库的版本号。那么终端即可通过查找该目标函数库的实现文件中命名空间下定义的全局整型变量来获取到该目标函数库的目标标识。
需要说明的是,步骤S204和S206还可以同时执行,或者按任意顺序来执行,本发明不作限定。
步骤S208:根据与所述第一标识关联匹配的第二标识,判断所述目标标识是否与所述第一标识关联匹配;
具体地,由于该第一标识预先关联匹配有第二标识,那么可以通过判断该目标标识是否等于该第二标识的方式,来判断该目标标识是否与该第一标识关联匹配,或者可以按照预设的关联匹配映射关系,得出该目标标识关联匹配的标识,然后判断该得到的标识是否等于该第一标识的方式,来判断该目标标识是否与该第一标识关联匹配。
优选地,例如该第一标识为该头文件中定义的用于标识该头文件的版本号的宏,该目标标识为该目标函数库的实现文件中命名空间下定义的用于标识该目标函数库的版本号,那么可以通过检测该宏标识的版本号与该全局整型变量标识的版本号是否相同的方式,来判断该目标标识是否与该第一标识关联匹配。当检测为是时,则关联匹配,执行步骤S212,当检测为否时,则不关联匹配,执行步骤S210
步骤S210:提示所述程序错误;
步骤S212:继续对所述目标程序进行编译。
具体地,步骤S210和S212可以参考上述实施例中的步骤S106和S108,这里不再赘述。
需要说明的是,实施例中步骤S104或者步骤S204可以在读取目标程序,获取该目标程序的头文件之后,该头文件中的内嵌代码在程序main函数执行之前,来自动执行,具体可以在该头文件中命名空间下定义一个具有文件作用域的类c对象d,通过来类c的构造函数触发自动执行步骤S104或者步骤S204。
为了更好地理解本发明实施例公开的程序检测方法的实施方式,下面通过代码举例来进行说明:
假设我们有C++库liblibrary_the3_svrkitco_api.a,其对外的头文件为svrkitco_api.h,实现文件为svrkitco_api.cpp,为其加上版本号一致性检测的方式如下:
svrkitco_api.h中插入的内嵌代码如下:
Figure GDA0002743457170000061
Figure GDA0002743457170000071
svrkitco_api.cpp中插入的代码如下:
namespace lib_version_check_def{
int liblibrary_the3_svrkitco_api_ver=1;
}
实施本发明实施例,通过读取目标程序,通过获取目标程序的头文件,确定头文件中声明的库函数与目标函数库中包含的库函数是否匹配;若匹配则可进行后续的程序编译,若不匹配则提示程序错误,从而实现了在库的头文件中插入特定检测代码来自动进行匹配检测,并提示库和相应头文件在使用时会出现不匹配的问题,解决了开发者需要花费较长的时间来排查库和相应头文件在使用时不匹配的问题,有助于快速定位库和相应头文件在使用时出现不匹配的问题,从而使得技术开发人员能够及时去解决不匹配的问题,大大提高了软件项目开发效率。
为了便于更好地实施本发明实施例的上述方案,本发明还对应提供了一种程序检测装置,如图3示出的本发明实施例提供的程序检测装置的结构示意图,程序检测装置30可以包括:读取模块300、获取模块302、确定模块304和提示模块306,其中,
读取模块300用于读取目标程序;
获取模块302用于获取所述目标程序的头文件;
确定模块304用于确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配;所述目标函数库为当前编译所述目标程序时使用的函数库;
提示模块306用于当所述确定模块确定出所述头文件中声明的库函数与目标函数库中包含的库函数不匹配时,则提示所述程序错误。
具体地,不同的函数库对应设有不同的标识;如图4示出的本发明提供的程序检测装置的另一实施例的结构示意图,程序检测装置30包括读取模块300、获取模块302、确定模块304和提示模块306外,还包括设置模块308,用于在确定模块304确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配之前,设置用于标识所述头文件的第一标识,以及设置用于标识初始函数库的第二标识;其中,所述第一标识与所述第二标识关联匹配,所述初始函数库中包含的库函数与所述头文件中声明的库函数匹配;
进一步地,如图5示出的本发明实施例提供的确认模块的结构示意图,确定模块304可以包括:第一查找单元3040、第二查找单元3042和判断单元3044,其中,
第一查找单元3040用于查找用于标识所述头文件的第一标识;
第二查找单元3042用于查找用于标识所述目标函数库的目标标识;
判断单元3044用于根据与所述第一标识关联匹配的第二标识,判断所述目标标识是否与所述第一标识关联匹配;
当判断单元3044判断结果为否时,则确定出所述头文件中声明的库函数与目标函数库中包含的库函数不匹配。
进一步地,本发明实施例中的设置模块308包括用于,在所述头文件中定义一个宏,以用于标识所述头文件的版本号;以及针对函数库对应的标识,通过在所述函数库的实现文件中命名空间下定义一个全局整型变量来设置,以用于标识所述函数库的版本号。
再进一步地,判断单元3004还可以包括:检测单元,用于检测所述宏标识的版本号与所述目标函数库中定义的所述全局整型变量标识的版本号是否相同;
当该检测单元的检测结果为否时,则判断出所述目标标识不与所述第一标识关联匹配。
再进一步地,本发明实施例中的确定模块304具体用于,在读取模块300读取目标程序,获取模块302获取所述目标程序的头文件之后,该头文件中的内嵌代码在程序main函数执行之前,执行所述确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配的步骤。
需要说明的是,本发明实施例中的程序检测装置30可以包括但不限于个人计算机、平板电脑等可以进行应用程序开发的设备,程序检测装置30的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
请参阅图6,图6是本发明提供的程序检测装置的另一实施例的结构示意图。其中,如图6所示,程序检测装置60可以包括:至少一个处理器601,例如CPU,至少一个网络接口604,用户接口603,存储器605,至少一个通信总线602以及显示屏606。其中,通信总线602用于实现这些组件之间的连接通信。其中,用户接口603可以包括触摸屏、键盘或鼠标等等。网络接口604可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器605可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器,存储器605包括本发明实施例中的flash。存储器605可选的还可以是至少一个位于远离前述处理器601的存储系统。如图6所示,作为一种计算机存储介质的存储器605中可以包括操作系统、网络通信模块、用户接口模块以及程序检测程序;显示屏606可以看作输出装置,用户接口603可以看作输入装置,网络接口604即可以看作输入装置也可以看作输出装置。
在图6所示的程序检测装置60中,处理器601可以用于调用存储器605中存储程序检测程序,并执行以下操作:
读取目标程序;
获取所述目标程序的头文件;
确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配;所述目标函数库为当前编译所述目标程序时使用的函数库;
当确定出所述头文件中声明的库函数与目标函数库中包含的库函数不匹配时,则通过显示屏606等提示所述程序错误。
具体地,不同的函数库对应设有不同的标识;处理器601确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配之前,还可以执行:设置用于标识所述头文件的第一标识,以及设置用于标识初始函数库的第二标识;其中,所述第一标识与所述第二标识关联匹配,所述初始函数库中包含的库函数与所述头文件中声明的库函数匹配;
处理器601确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配,可以包括:
查找用于标识所述头文件的第一标识;
查找用于标识所述目标函数库的目标标识;
根据与所述第一标识关联匹配的第二标识,判断所述目标标识是否与所述第一标识关联匹配;
当判断结果为否时,则确定出所述头文件中声明的库函数与目标函数库中包含的库函数不匹配。
具体地,处理器601设置用于标识所述头文件的第一标识,可以包括:在所述头文件中定义一个宏,以用于标识所述头文件的版本号。
具体地,函数库对应的标识通过在所述函数库的实现文件中命名空间下定义一个全局整型变量来设置,以用于标识所述函数库的版本号。
具体地,处理器601根据与所述第一标识关联匹配的第二标识,判断所述目标标识是否与所述第一标识关联匹配,可以包括:
检测所述宏标识的版本号与所述目标函数库中定义的所述全局整型变量标识的版本号是否相同;
当检测结果为否时,则判断出所述目标标识不与所述第一标识关联匹配。
具体地,处理器601读取目标程序,获取所述目标程序的头文件之后,所述头文件中的内嵌代码在程序main函数执行之前,可以执行所述确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配的步骤。
综上所述,实施本发明实施例,通过读取目标程序,通过获取目标程序的头文件,确定头文件中声明的库函数与目标函数库中包含的库函数是否匹配;若匹配则可进行后续的程序编译,若不匹配则提示程序错误,从而实现了在库的头文件中插入特定检测代码来自动进行匹配检测,并提示库和相应头文件在使用时会出现不匹配的问题,解决了开发者需要花费较长的时间来排查库和相应头文件在使用时不匹配的问题,有助于快速定位库和相应头文件在使用时出现不匹配的问题,从而使得技术开发人员能够及时去解决不匹配的问题,大大提高了软件项目开发效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (13)

1.一种程序检测方法,其特征在于,包括:
读取目标程序;
获取所述目标程序的头文件,所述头文件中设置有用于标识所述头文件的版本的第一标识,所述头文件中内嵌有用于执行所述头文件和目标函数库的版本一致性检测的构造函数,所述目标函数库中设置有用于标识所述目标函数库的版本的目标标识;
通过所述构造函数在所述目标程序main函数执行之前自动根据所述第一标识和所述目标标识确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配;所述目标函数库为当前编译所述目标程序时使用的函数库;
当确定出所述头文件中声明的库函数与目标函数库中包含的库函数不匹配时,则提示程序错误。
2.如权利要求1所述的方法,其特征在于,不同的函数库对应设有不同的标识;所述确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配之前,还包括:设置用于标识所述头文件的第一标识,以及设置用于标识初始函数库的第二标识;其中,所述第一标识与所述第二标识关联匹配,所述初始函数库中包含的库函数与所述头文件中声明的库函数匹配;
所述确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配,包括:
查找用于标识所述头文件的第一标识;
查找用于标识所述目标函数库的目标标识;
根据与所述第一标识关联匹配的第二标识,判断所述目标标识是否与所述第一标识关联匹配;
当判断结果为否时,则确定出所述头文件中声明的库函数与目标函数库中包含的库函数不匹配。
3.如权利要求2所述的方法,其特征在于,所述设置用于标识所述头文件的第一标识,包括:在所述头文件中定义一个宏,以用于标识所述头文件的版本号。
4.如权利要求3所述的方法,其特征在于,函数库对应的标识通过在所述函数库的实现文件中包含的命名空间下定义一个全局整型变量来设置,以用于标识所述函数库的版本号。
5.如权利要求4所述的方法,其特征在于,所述根据与所述第一标识关联匹配的第二标识,判断所述目标标识是否与所述第一标识关联匹配,包括:
检测所述宏标识的版本号与所述目标函数库中定义的所述全局整型变量标识的版本号是否相同;
当检测结果为否时,则判断出所述目标标识不与所述第一标识关联匹配。
6.如权利要求1-5任一项所述的方法,其特征在于,所述读取目标程序,获取所述目标程序的头文件之后,所述头文件中的内嵌代码在程序main函数执行之前,执行所述确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配的步骤。
7.一种程序检测装置,其特征在于,包括:
读取模块,用于读取目标程序;
获取模块,用于获取所述目标程序的头文件,所述头文件中设置有用于标识所述头文件的版本的第一标识,所述头文件中内嵌有用于执行所述头文件和目标函数库的版本一致性检测的构造函数,所述目标函数库中设置有用于标识所述目标函数库的版本的目标标识;
确定模块,用于通过所述构造函数在所述目标程序main函数执行之前自动根据所述第一标识和所述目标标识确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配;所述目标函数库为当前编译所述目标程序时使用的函数库;
提示模块,用于当所述确定模块确定出所述头文件中声明的库函数与目标函数库中包含的库函数不匹配时,则提示程序错误。
8.如权利要求7所述的装置,其特征在于,不同的函数库对应设有不同的标识;所述装置还包括:
设置模块,用于在所述确定模块确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配之前,设置用于标识所述头文件的第一标识,以及设置用于标识初始函数库的第二标识;其中,所述第一标识与所述第二标识关联匹配,所述初始函数库中包含的库函数与所述头文件中声明的库函数匹配;
所述确定模块包括:
第一查找单元,用于查找用于标识所述头文件的第一标识;
第二查找单元,用于查找用于标识所述目标函数库的目标标识;
判断单元,用于根据与所述第一标识关联匹配的第二标识,判断所述目标标识是否与所述第一标识关联匹配;
当所述判断单元判断结果为否时,则确定出所述头文件中声明的库函数与目标函数库中包含的库函数不匹配。
9.如权利要求8所述的装置,其特征在于,所述设置模块包括用于,在所述头文件中定义一个宏,以用于标识所述头文件的版本号。
10.如权利要求9所述的装置,其特征在于,针对函数库对应的标识,所述设置模块通过在所述函数库的实现文件中包含的命名空间下定义一个全局整型变量来设置,以用于标识所述函数库的版本号。
11.如权利要求10所述的装置,其特征在于,所述判断单元包括:
检测单元,用于检测所述宏标识的版本号与所述目标函数库中定义的所述全局整型变量标识的版本号是否相同;
当所述检测单元的检测结果为否时,则判断出所述目标标识不与所述第一标识关联匹配。
12.如权利要求7-11任一项所述的装置,其特征在于,所述确定模块具体用于,在所述读取模块读取目标程序,所述获取模块获取所述目标程序的头文件之后,该头文件中的内嵌代码在程序main函数执行之前,执行所述确定所述头文件中声明的库函数与目标函数库中包含的库函数是否匹配的步骤。
13.一种计算机存储介质,其特征在于,所述计算机存储介质存储有信息处理应用程序,所述信息处理应用程序被用于由处理器调用并执行如权利要求1-6任一项所述的程序检测方法。
CN201610584497.5A 2016-07-22 2016-07-22 一种程序检测方法及装置 Active CN107643893B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610584497.5A CN107643893B (zh) 2016-07-22 2016-07-22 一种程序检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610584497.5A CN107643893B (zh) 2016-07-22 2016-07-22 一种程序检测方法及装置

Publications (2)

Publication Number Publication Date
CN107643893A CN107643893A (zh) 2018-01-30
CN107643893B true CN107643893B (zh) 2020-12-29

Family

ID=61109471

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610584497.5A Active CN107643893B (zh) 2016-07-22 2016-07-22 一种程序检测方法及装置

Country Status (1)

Country Link
CN (1) CN107643893B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109828759B (zh) * 2018-12-15 2023-07-18 中国平安人寿保险股份有限公司 代码编译方法、装置、计算机装置及存储介质
CN109739506B (zh) * 2018-12-27 2022-02-18 郑州云海信息技术有限公司 一种高性能应用编译中库函数缺失的处理方法及系统
CN111581094B (zh) * 2020-05-08 2023-06-23 贝壳技术有限公司 头文件名检测方法、装置、存储介质及电子设备
CN111984531B (zh) * 2020-07-31 2022-01-28 五八有限公司 一种代码耦合检测的方法及装置
CN116401147B (zh) * 2023-02-08 2024-05-03 深圳开源互联网安全技术有限公司 一种函数库引用版本检测方法、设备及存储介质
CN116069338B (zh) * 2023-03-07 2023-08-11 深圳开源互联网安全技术有限公司 一种函数库引用检测方法、装置、设备及可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761510A (en) * 1995-11-07 1998-06-02 Microsoft Corporation Method for error identification in a program interface
CN101510154A (zh) * 2009-03-20 2009-08-19 华亚微电子(上海)有限公司 标准逻辑单元

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761510A (en) * 1995-11-07 1998-06-02 Microsoft Corporation Method for error identification in a program interface
CN101510154A (zh) * 2009-03-20 2009-08-19 华亚微电子(上海)有限公司 标准逻辑单元

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
C++ 包含头文件和宏的使用和条件编译;矮油;《https://www.cnblogs.com/rednodel/p/5000650.html》;20151127;第1页 *
什么是makefile;feisky;《https://www.cnblogs.com/feisky/archive/2009/11/16/1604189.html》;20091116;第1页 *

Also Published As

Publication number Publication date
CN107643893A (zh) 2018-01-30

Similar Documents

Publication Publication Date Title
CN107643893B (zh) 一种程序检测方法及装置
US10019240B2 (en) Method and apparatus for detecting code change
US8122440B1 (en) Method and apparatus for enumerating external program code dependencies
CN109918294B (zh) 一种混源软件自主可控性检测方法及系统
CN107526625B (zh) 一种基于字节码检查的Java智能合约安全检测方法
CN106371997B (zh) 一种代码检查方法及装置
CN112394942A (zh) 基于云计算的分布式软件开发编译方法及软件开发平台
CN117009231B (zh) 基于对话式大语言模型的高可靠单元测试自动生成方法及装置
CN112948828A (zh) 一种二进制程序恶意代码检测方法、终端设备及存储介质
CN108897588B (zh) 一种用于模块间通信的路由方法和路由装置
CN113867704A (zh) 一种代码测试处理方法、装置、电子设备及存储介质
CN111552480B (zh) 跨平台编译方法、装置、设备及可读存储介质
WO2023179298A1 (zh) 应用程序更新、应用程序开发方法、装置及计算机设备
CN111966578A (zh) 一种安卓兼容性缺陷修复效果的自动化评估方法
CN111352631A (zh) 一种接口兼容性检测方法及装置
CN109426546B (zh) 应用启动方法及装置、计算机存储介质及设备
CN113127367B (zh) Android动态权限申请的缺陷检测方法
CN111796832B (zh) 热补丁文件生成方法、装置、设备及存储介质
US20060064681A1 (en) Method and system for verifying makefile accuracy
CN108614704B (zh) 代码编译方法及装置
CN115237753A (zh) 固件排错方法、系统、终端设备及存储介质
CN114706586A (zh) 代码编译、代码运行方法、装置、计算机设备及存储介质
Mesnard et al. Towards a framework for algorithm recognition in binary code
CN114489653A (zh) 基于编译器的数据处理方法、装置以及可读存储介质
CN110096888B (zh) 一种加快验证及分析smm安全隐患的方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant