为什么Perl的Devel :: LeakTrace :: Fast指向空白文件和evals?

时间:2010-03-23 15:28:14

标签: perl memory-leaks

我正在使用Devel :: LeakTrace :: Fast来调试perl脚本中的内存泄漏,该脚本被设计为守护进程,该守护进程在睡眠中运行无限循环直到被中断。我在阅读输出和查找文档以帮助我理解输出时遇到了一些麻烦。 perldoc在输出中不包含太多信息。大多数都是有道理的,比如指向DBI中的全局变量。然而,与输出混合是几个

leaked SV(<LOCATION>) from (eval #) line #

数字是数字和&lt; LOCATION&gt;是记忆中的一个位置。脚本本身在任何时候都没有使用eval - 我没有调查每个使用过的模块以查看是否存在evals。大多数我想知道的是如何找到这些遗嘱(如果可能的话)。

我还发现以下条目一遍又一遍地重复

leaked SV(<LOCATION>) from  line #

线#总是相同的#。跟踪该行所在的文件不是很有帮助。

1 个答案:

答案 0 :(得分:3)

您可能没有在直接的任何地方使用eval,但您正在使用的某些模块可能是。此外,您链接的某些XS代码可能存在问题。

您是否尝试过一点一点地减少脚本,删除您认为可能怀疑的部分(甚至是您认为不是的部分),并查看结果如何变化?如果你可以将你的脚本分成不同的部分(无论如何,从架构和可维护性的角度来看,这是一个好主意),你或许可以找到哪个区域是罪魁祸首,然后从那里向下钻取。