1,热补丁机制
简单理解就是,函数的替换,把之前的同名函数的地址换成新的函数。
具体的原理,就是修改函数入口和出口处的汇编代码,利用指令跳转,实现函数体的替换。
2,补丁代码实现方法
引用的头文件,可以全部保留
修改的函数,整个函数留着,
不修改的函数,直接删掉。
条件编译,有括号的和没有括号的
3,热补丁可修改的范围
(1)热补丁无法修改.h,只能修改.c
(2)可以新增变量和函数
(3)过于简单的函数,可能会被内联优化,从而无法打补丁。
(4)过于简单的函数,如果没有内联,但是汇编指令太少的话,也是无法打补丁的。
4,编码规则
(1)全局变量不能重复定义,要么删掉或注释掉,要么extern
(2)补丁函数用到的全局变量和调用函数需要extern
(3)宏是可以直接用的
(4)静态函数和静态变量不能打补丁(好像是吧?)