记录全局变量信息及检测全局变量越界操作的方法、装置制造方法及图纸

技术编号:19964190 阅读:96 留言:0更新日期:2019-01-03 12:48
本文公布了一种记录全局变量信息及检测全局变量越界操作的方法、装置,预先建立模块信息表,所述模块信息表为哈希表;所述方法包括:获取当前模块数据段在内存中的起始地址和数据段大小;创建当前模块的全局变量信息表,并将所述模块的全局变量信息注册到所述全局变量信息表中;将当前模块的所述数据段在内存中的起始地址、所述数据段大小以及全局变量信息表地址作为当前模块的模块信息存入所述模块信息表;其中,所述模块为如下之一:动态库;主程序。本申请能够在检查全局变量越界操作时极大提升并发软件中全局变量的检测效率;同时,也能够在检查全局变量越界操作时极大的降低内存消耗。

Method and Device for Recording Global Variable Information and Detecting Global Variable Transboundary Operation

This paper presents a method and device for recording global variable information and detecting global variable cross-border operation. A module information table is established in advance. The module information table is a hash table. The method includes acquiring the starting address and the size of the data segment of the current module in memory, creating the global variable information table of the current module, and annotating the global variable information of the module. In the global variable information table, the starting address of the data segment in memory, the size of the data segment and the address of the global variable information table of the current module are stored as the module information of the current module in the module information table, in which the module is one of the following: dynamic library; main program. This application can greatly improve the efficiency of global variable detection in concurrent software when checking global variable crossover operations, and also can greatly reduce memory consumption when checking global variable crossover operations.

【技术实现步骤摘要】
记录全局变量信息及检测全局变量越界操作的方法、装置
本专利技术涉及编译
,具体涉及一种记录全局变量信息及检测全局变量越界操作的方法、装置。
技术介绍
现有的业界领先的基于编译插桩技术的C/C++全局变量越界检测工具主要采用全局信息表和地址映射两种技术来实现。全局信息表即建立一种全局的数据结构来保存每个全局变量的起始地址和大小等信息。一旦发生内存访问就查询该全局的数据结构获取被访问的全局变量的信息,从而判断是否越界。由于数据结构是全局的,在并发访问的时候必须要进行互斥保护,这就导致了这种技术存在检测效率低下的缺陷,特别是在并发较激烈的软件中可能无法正常运行。地址映射技术是将整个进程的内存空间按照一定的比例映射到某个内存区域中,该内存区域叫做映射区。在全局变量对应的映射区范围设定魔术值,一旦发生内存访问就查询对应的映射区,根据魔术值判断是否越界。映射区的缺陷是消耗内存特别是虚拟内存很大,在嵌入式环境中可能无法正常使用。
技术实现思路
为了解决相关技术中检测工具检测效率低下和/或消耗内存大的技术问题,本专利技术实施例提供了一种记录全局变量信息及检测全局变量越界操作的方法、装置。本申请提供本文档来自技高网...

【技术保护点】
1.一种记录全局变量信息的方法,其特征在于,预先建立模块信息表,所述模块信息表为哈希表;所述方法包括:获取当前模块数据段在内存中的起始地址和数据段大小;创建当前模块的全局变量信息表,并将所述模块的全局变量信息注册到所述全局变量信息表中;将当前模块的所述数据段在内存中的起始地址、所述数据段大小以及全局变量信息表地址作为当前模块的模块信息存入所述模块信息表;其中,所述模块为如下之一:动态库;主程序。

【技术特征摘要】
1.一种记录全局变量信息的方法,其特征在于,预先建立模块信息表,所述模块信息表为哈希表;所述方法包括:获取当前模块数据段在内存中的起始地址和数据段大小;创建当前模块的全局变量信息表,并将所述模块的全局变量信息注册到所述全局变量信息表中;将当前模块的所述数据段在内存中的起始地址、所述数据段大小以及全局变量信息表地址作为当前模块的模块信息存入所述模块信息表;其中,所述模块为如下之一:动态库;主程序。2.根据权利要求1所述的方法,其特征在于,所述创建当前模块的全局变量信息表,包括:按照当前模块所属全局变量信息表总大小动态申请内存,并将所述全局变量信息表的所有元素清零。3.根据权利要求2所述的方法,其特征在于,按照当前模块所属全局变量信息表总大小动态申请内存之前,还包括:将当前模块的所述数据段大小除以8,并将商向上取整后获得所述全局变量信息表的元素数量,并基于所获得的元素数量以及所述全局变量信息表中元素的大小,获取当前模块所属全局变量信息表总大小。4.根据权利要求1所述的方法,其特征在于,将所述模块的全局变量信息注册到所述全局变量信息表中,包括:根据全局变量起始地址和所述当前模块数据段在内存中的起始地址,获得起始索引值;根据全局变量大小获取需占用的元素数量N;在所述全局变量信息表中从所述起始索引值开始的N个元素中全部填入全局变量信息,所述全局变量信息包括所述全局变量起始地址和所述全局变量大小。5.根据权利要求4所述的方法,其特征在于,所述根据全局变量起始地址和所述当前模块数据段在内存中的起始地址,获得起始索引值,包括:将所述全局变量起始地址按照8字节对齐后,减去所述当前模块数据段在内存中的起始地址,再将得到的差值除以8的商向上取整获得所述起始索引值。6.根据权利要求4所述的方法,其特征在于,所述根据全局变量大小获取需占用的元素数量N,包括:将所述全局变量大小除以8的商向上取整,获取需占用的元素数量N。7.根据权利要求1至6任一项所述的方法,其特征在于,所述获取当前模块数据段在内存中的起始地址和数据段大小之前,还包括:在当前模块中插入初始化桩子;所述获取当前模块数据段在内存中的起始地址和数据段大小,包括:所述初始化桩子在当前模块加载之后先于被测程序代码运行,以获取当前模块数据段在内存中的起始地址和数据段大小。8.根据权利要求7所述的方法,其特征在于,将所述模块的全局变量信息注册到所述全局变量信息表中之前,还包括:在当前模块中为每个全局变量生成一个全局变量注册桩子;将所述模块的全局变量信息注册到所述全局变量信息表中,包括:所述全局变量注册桩子被所述初始化桩子调用,以将所述模块的全局变量信息注册到所述全局变量信息表中。9.一种检查全局变量越界操作的方法,其特征在于,包括:被测程序运行后并试图进行内存访问时,根据试图访问的内存地址和访问范围,从预建立的模块信息表中查找与所述内存地址相匹配的模块信息;根据所述内存地址及其匹配的所述模块信息,获取对应的全局变量信息;将所述内存地址和访问范围对应的内存地址范围与所述全局变量信息对应的全局变量内存范围比较,作出本次操作的越界判决;其中,所述模块信息包括模块的数据段在内存中的起始地址、数据段大小以及全局变量信息表地址;其中,所述模块为如下之一:动态库;主程序。10.根据权利要求9所述的方法,其特征在于,所述根据所述内存地址及其匹配的所述模块信息,获取对应的全局变量信息,包括:将所述内存地址按照8字节对齐后,减去所述模块信息中数据段在内存的起始地址,再将差值除以8得到的商向上取整,获得全局变量在相应全局变量信息表中对应的索引值;根据索引值从所述全局变量信息表中读出全局变量信息,所述全局变量信息包括:全局变量起始地址和全局变量大小。11.根据权利要求9所述的方法,其特征在于,将所述内存地址和访问范围对应的内存地址范围与所述全局变量信息对应的全局变量内存范围比较,作出本次操作的越界判决,包括:所述内存地址和访问范围对应的内存地址范围完全在所述全局变量信息对应的全局变量内存范围内,则判定本次操作合法;所述内存地址和访...

【专利技术属性】
技术研发人员:汪世龙杜乐生
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:广东,44

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

1