我正在使用Devel :: LeakTrace :: Fast来调试perl脚本中的内存泄漏,该脚本被设计为守护进程,该守护进程在睡眠中运行无限循环直到被中断。我在阅读输出和查找文档以帮助我理解输出时遇到了一些麻烦。 perldoc在输出中不包含太多信息。大多数都是有道理的,比如指向DBI中的全局变量。然而,与输出混合是几个
leaked SV(<LOCATION>) from (eval #) line #
数字是数字和&lt; LOCATION&gt;是记忆中的一个位置。脚本本身在任何时候都没有使用eval - 我没有调查每个使用过的模块以查看是否存在evals。大多数我想知道的是如何找到这些遗嘱(如果可能的话)。
我还发现以下条目一遍又一遍地重复
leaked SV(<LOCATION>) from line #
线#总是相同的#。跟踪该行所在的文件不是很有帮助。
答案 0 :(得分:3)
您可能没有在直接的任何地方使用eval,但您正在使用的某些模块可能是。此外,您链接的某些XS代码可能存在问题。
您是否尝试过一点一点地减少脚本,删除您认为可能怀疑的部分(甚至是您认为不是的部分),并查看结果如何变化?如果你可以将你的脚本分成不同的部分(无论如何,从架构和可维护性的角度来看,这是一个好主意),你或许可以找到哪个区域是罪魁祸首,然后从那里向下钻取。