【技术实现步骤摘要】
热补丁文件生成、一致性检测方法、装置、设备和介质
[0001]本专利技术实施例涉及C/C++语言编写的linux用户态软件的热补丁
,尤其涉及一种热补丁文件生成、一致性检测方法、装置、设备和介质。
技术介绍
[0002]在通信领域,确保服务的连贯性非常重要,在程序出现故障时需要在线修复故障而不是重启程序。在线修复故障的技术通常称为热补丁技术,该技术将正在运行的被补丁函数(有故障的函数)替换成补丁函数(修复故障后的函数),以达到修复故障而又不重启程序的目的。热补丁技术基本上都是采用将被补丁函数入口处的指令修改为跳转到补丁函数入口的跳转指令,达到函数替换目的。
[0003]由于一般的程序由主程序和依赖的动态库组成,主程序和动态库中可能存在同名函数,如何准确获取被补丁函数是对程序正确打热补丁的前提。比如要对函数A打补丁,可能程序依赖的动态库中不止一个定义了名为A的函数,找错函数将导致程序崩溃。目前业界常用的做法是要么要求打补丁时指定被补丁函数的归属信息(主程序或者动态库),要么要求在制作补丁时将被补丁函数将归属信息记 ...
【技术保护点】
【技术特征摘要】
1.一种热补丁文件生成方法,所述热补丁文件生成方法包括:获取修改前的第一工程中的第一目标文件、修改后的第二工程中的第二目标文件,所述第一目标文件和所述第二目标文件分别为所述第一工程与所述第二工程对应存储节点上存在差异的文件;获取生成所述第一目标文件的第一源文件名、生成所述第二目标文件的第二源文件名;获取第一主程序的第一主程序源文件列表、第一动态库的第一动态库源文件列表、第二主程序的第二主程序源文件列表、第二动态库的第二动态库源文件列表,所述第一主程序和所述第一动态库归属于所述第一工程,所述第二主程序和所述第二动态库归属于所述第二工程;确定所述第一目标文件、所述第二目标文件的归属信息,所述归属信息根据所述第一源文件名、所述第二源文件名、所述第一主程序源文件列表、所述第二主程序源文件列表、所述第一动态库源文件列表、所述第二动态库源文件列表确定,所述归属信息包括以下任意之一:归属于第一动态库、归属于第二动态库、归属于第一主程序、归属于第二主程序;获取主程序差异函数,生成第一中间热补丁文件,所述第一中间热补丁文件包括识别信息,所述标识信息包括主程序标识,所述主程序差异函数包括对应节点上归属于第一主程序的第一目标文件与归属于第二主程序的第二目标文件中存在差异的函数;获取动态库差异函数,生成第二中间热补丁文件,所述第二中间热补丁文件包括识别信息,所述标识信息包括动态库标识,所述动态库差异函数包括对应节点上归属于第一动态库的第一目标文件与归属于第二动态库的第二目标文件中存在差异的函数;封装所述第一中间热补丁文件与所述第二中间热补丁文件,生成热补丁文件。2.根据权利要求1所述的热补丁文件生成方法,其特征在于,所述获取修改前的第一工程中的第一目标文件、修改后的第二工程中的第二目标文件之前,还包括:根据调试信息的编译参数在同一目录下分别构建修改前的第一工程和修改后的第二工程,所述第一工程和所述第二工程的同名二进制文件的编译路径相同;所述第一目标文件和所述第二目标文件分别为所述第一工程和所述第二工程的各同名二进制文件中存在差异的文件。3.根据权利要求2所述的热补丁文件生成方法,其特征在于,所述获取生成所述第一目标文件的第一源文件名、生成所述第二目标文件的第二源文件名包括:解析所述第一目标文件的调试信息,得到生成所述第一源文件名;解析所述第二目标文件的调试信息,得到生成所述第二源文件名。4.根据权利要求2所述的热补丁文件生成方法,其特征在于,所述获取第一主程序的第一主程序源文件列表、第一动态库的第一动态库源文件列表、第二主程序的第二主程序源文件列表、第二动态库的第二动态库源文件列表包括:解析所述第一主程序的调试信息,得到所述第一主程序源文件列表;解析所述第二主程序的调试信息,得到所述第二主程序源文件列表;解析所述第一动态库的调试信息,得到所述第一动态库源文件列表;解析所述第二动态库的调试信息,得到所述第二动态库源文件列表。5.根据权利要求2所述的热补丁文件生成方法,其特征在于,所述获取主程序差异函
数,生成第一中间热补丁文件,获取动态库差异函数,生成第二中间热补丁文件包括:根据所述归属信息,将所述第一目标文件分别链接生成第一主程序中间文件、第一动态库中间文件;根据所述归属信息,将所述第二目标文件分别链接生成第二主程序中间文件、第二动态库中间文件;提取所述第一主程序中间文件与第二主程序中间文件中同名二进制文件中存在差异的函数作为所述主程序差异函数,根据所述主程序差异函数生成所述第一中间热补丁文件;提取所述第一动态库中间文件与第二动态库中间文件中同名二进制文件中存在差异的函数作为所述动态库差异函数,根据所述动态库差异函数生成所述第二中间热补丁文件。6.根据权利要求5所述的热补丁文件生成方法,其特征在于,所述根据所述归属信息,将所述第一目标文件分别链接生成第一主程序中间文件、第一动态库中间文件,根据所述归属信息,将所述第二目标文件分别链接生成第二主程序中间文件、第二动态库中间文件包括:对比所述第一工程和所述第二工程的工程目录,生成目标文件列表,所述目标文件列表中每个节点包括同名的所述第一目标文件的全路径名和所述第二目标文件的全路径名;根据所述归属信息,根据所述目标文件列表所记录的路径信息将所述第一目标文件分步链接生成第一主程序中间文件、第一动态库中间文件;根据所述归属信息,根据所述目标文件列表所记录的路径信息将所述第二目标文件分步链接生成第二主程序中间文件、第二动态库中间文件。7.根据权利要求1-6任一项所述的热补丁文件生成方法,其特征在于,所述热补丁文件生成方法还包括以下至少之一:所述热补丁文件中,所述第一中间热补丁文件和所述第二中间热补丁文件分别作为一个独立的节进行存放;所述热补丁文件包括主程序信息。8.一种一致性检测方法,其特征在于,所述一致性检测方法包括:获取热补丁文件的全路径及被补丁函数的标识信息;获取源程序的源程序调用栈信息;根据所述源程序调用栈信息,所述源程序的当前进程的各线程并行回溯各所述线程自身的当前函数调用链;遍历所述当前函数调用链中的每层中的线程函数,进行一致性检测,所述一致性检测包括根据所述标识信息确定所述线程的线程状态,所述线程状态包括阻塞状态或继续运行;根据各所述线程的所述线程状态确定所述一致性检测的结果。9.根据权利要求8所述的一致性检测方法,其特征在于,所述根据所述标识信息确定所述线程的线程状态包括:检测到所述线程函数中不包括所述被补丁函数,所述线程进入阻塞状态。10.根据权利要求9所述的一致性检测方法,其特征在于,所述根据各所述线程的所述
线程状态确定所述一致性检测的结果包括:各所述线程均进入阻塞状态,所述源程序的一致性检测成功。11.根据权利要求10所述的一致...
【专利技术属性】
技术研发人员:唐玉科,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。