我正在尝试使用 LD_PRELOAD 来拦截 PyDict_New 函数。我已经验证了这个配方在 python 解释器中与 getpid 一起工作,并且我已经对其进行了调整以使用 PyDict_New,但它根本不像我预期的那样工作。虽然我清楚地分配了字典,并且必须使用这个函数,但我的覆盖没有被调用。
我究竟做错了什么?
背景:我正在尝试在一个非常大的系统中调试问题。我发现有一个引用计数错误的字典。我知道第一次分配 dict 的位置,以及问题出现的位置,但我很确定在某个中间时间计数会变坏,并且简单的代码跟踪不会做,因为 dict 被缓存并重用(通过 PyDict_New)由 gc 系统。