【发布时间】:2011-08-05 16:06:36
【问题描述】:
如果我想克隆一个库并只更改一个函数,比如 memcpy 或 memmove,并有一个已经构建的可执行链接到它以进行调试/探索,那么正确的方法是什么?
我猜我需要用我的修改重新编译整个库,但是还有其他方法吗?
我知道有诸如 malloc 钩子之类的东西,但这似乎是 malloc 的一个特例。
我很好奇 valgrind 和 gdb 如何在另一个程序中执行此操作的具体细节,如果有人有相关资源的话。
我对 mac 和 linux 解决方案感兴趣。在 linux 上,我之前使用过 LD_LIBRARY_PATH - 除了库名称相同之外,我还需要做这一切吗?我将如何在 mac 上执行此操作?
对于那些好奇我为什么要这样做的人,目的是为了实验音乐。我这样做是为了处理内存操作,因此 memcpy/memmove 将正常工作,但访问的数据也将发送到声卡。我知道还有其他方法可以做到这一点(我已经做了一些其他方法),但目前我对专注于 memcpy/memmove 很感兴趣,所以如果你能将你的答案限制在这个焦点上,我将不胜感激。
【问题讨论】:
标签: c debugging dynamic-linking c-libraries