[发明专利]一种用于通信系统linux环境中的热补丁修复方法在审
申请号: | 201611082458.1 | 申请日: | 2016-11-30 |
公开(公告)号: | CN106775671A | 公开(公告)日: | 2017-05-31 |
发明(设计)人: | 王鑫鹏;陈辉;陶琴;秦燕婷 | 申请(专利权)人: | 武汉虹信通信技术有限责任公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙)42222 | 代理人: | 严彦 |
地址: | 430073 湖北省*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 用于 通信 系统 linux 环境 中的 补丁 修复 方法 | ||
技术领域
本发明涉及通信技术领域,尤其是涉及一种基于Linux系统的修复正在运行的进程的bug的方法。
背景技术
在通信系统中,为确保通信服务的连贯,提供通信服务的程序要少重启和不中断服务,尽可能的做到7*24小时的运行。但是当服务程序出现bug(错误),需要修复的时候,传统的方法是用修复好的程序文件代替原来的程序文件来执行,这样不可避免的出现重启和服务中断。
使用热补丁技术可以避免服务中断。将修正bug的代码编译成一个小的补丁文件,在linux系统是编译成可动态加载的so(一种文件格式)文件,然后不中断服务让服务程序加载补丁文件,用补丁文件的代码替换掉有bug的代码。
目前主要的热补丁技术实现如下:
服务程序启动,正常提供服务;当需要打热补丁时,由一个打补丁程序读取补丁文件,解析补丁文件的符号表,然后attach(挂载)上服务程序,将解析后的补丁文件写到服务程序的内存中,最后修复服务程序的bug。
使用这种打补丁的方法,由打补丁程序来解析补丁文件,操作会比较麻烦,同时也容易出错。另外,由于attach服务程序会导致服务暂停,因此打补丁程序解析补丁文件会导致服务暂停的时间比较长。
发明内容
针对现有技术缺陷,本发明提供了一种新的用于通信系统linux环境中的热补丁修复方法。
本发明的技术方案为一种用于通信系统linux环境中的热补丁方法,设置用于修正程序bug的热补丁为能够动态加载的so文件;已启动的服务程序加载热补丁文件后,进行热补丁操作,
加载热补丁文件过程包括以下子步骤,
步骤1.1,服务程序已运行;
步骤1.2,向服务程序发送命令,服务程序收到命令后,将补丁的so文件加载到内存空间内;
之后执行热补丁操作,打补丁的过程包括以下子步骤,
步骤2.1,启动打补丁程序,打补丁程序通过系统调用挂载上服务程序;
步骤2.2,在服务程序的内存空间里查找补丁内的函数和将要被替换的函数的地址;
步骤2.3,计算出补丁内的函数和将要被替换的函数的地址的差值,在将要被替换的函数的地址处写入jmp命令,使得访问此函数时,跳转到补丁函数。
而且,服务程序内部有一个独立的线程,负责接收并处理工具程序发送的命令;此线程不参与也不影响程序正常的业务处理。
而且,打补丁程序挂载上服务程序后,能够直接访问服务程序的内存空间。
该方法能在linux系统中实现对正在运行的进程打热补丁,修正程序的bug;同时能比较方便地解析补丁文件,减少因为attach服务程序导致的服务中断时间。
本发明对比已有技术有以下创新点:
1、服务程序来解析补丁文件,能减少attach服务程序导致服务暂停的时间,减少打补丁对正常服务造成的影响。
2、进一步地,服务程序用独立的task接收用户输入的命令,这样让服务程序来load补丁文件,降低了load和解析补丁文件的复杂度。
本发明技术方案将在大型通信系统中发挥重要作用,具有重大的市场价值。
附图说明
图1为现有热补丁技术的传统方法示意图;
图2为本发明实施例的热补丁方案示意图。
图3为本发明中服务程序的intershell task功能示意图。
具体实施方式
以下结合附图和实施例详细说明本发明技术方案,提供了对该实施例的全面理解的详细细节。
对于热补丁技术,首先将用来修复bug的代码编译成so文件,传统的方法是由打补丁程序来解析补丁文件,并写到服务程序的内存空间里,如图1所示:
打补丁程序Attach服务程序,之后服务程序暂停执行;
解析补丁文件;
将解析后的补丁文件写到服务程序的内存空间;
在服务程序的内存空间中查找bug函数和补丁函数的地址;
在bug函数的位置写入jmp命令;
打补丁结束,服务程序恢复执行。
这样解析补丁文件比较复杂,同时暂停服务程序执行的时间也会比较长;本发明提出由服务程序来解析补丁文件,降低解析的复杂度,同时减少服务暂停的时间。
本发明实施例设置用于修正程序bug(错误)的热补丁为可动态加载的so(一种文件格式)文件;需要打补丁的程序(服务程序)已启动,在服务程序加载热补丁文件后,进行热补丁操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉虹信通信技术有限责任公司,未经武汉虹信通信技术有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611082458.1/2.html,转载请声明来源钻瓜专利网。