假设你有一个函数 foo() 编译成一个在 Unix 上运行的程序。

在程序运行时,是否可以通过动态加载包含 foo() 修改版本的目标文件来“替换”函数 foo?

在我过去工作的嵌入式系统上,我们可以取消保护文本段,然后基本上“修补” foo() 的地址以指向新修改的 foo()。

它有时用于在客户站点上进行调试,并且有许多特殊限制。

这在 Unix 上可行吗?

最佳答案

我想这取决于环境。我知道热插拔生产代码在 Erlang 模块中是微不足道的,而在 Ruby 中并不难。 C 可能是另一种动物。

关于unix - 如何修补实时运行的 Unix 代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2181342/

10-13 09:20