我想编写自己的 malloc/free 函数以进行调试,文档说我必须将 DYLD_FORCE_FLAT_NAMESPACE 与 DYLD_INSERT_LIBRARIES 一起使用。但同时libgmalloc文章明确指出:
libgmalloc is available in /usr/lib/libgmalloc.dylib. To use it, set this environment variable:
set DYLD_INSERT_LIBRARIES to /usr/lib/libgmalloc.dylib
Note: it is no longer necessary to set DYLD_FORCE_FLAT_NAMESPACE.
问题是:如何消除 DYLD_FORCE_FLAT_NAMESPACE 中的必要性?如果我不强制命名空间平坦性,则不会使用我自己的库中的 malloc。
您需要使用 dyld 插入。这包括生成一个特殊的__interpose
部分中的__DATA
包含替换/替换函数地址对的动态库段。这私人 dyld-interusing.hdyld 源代码的标头包含一个方便的宏来帮助解决此问题,以及一个示例用法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)