我已经跑了Devel::Leak http://search.cpan.org/~ni-s/Devel-Leak-0.03/Leak.pm在我的程序中,我不明白它给我的输出。
首先,我看到它正在打印一个指针列表。我可以在数组中获取该列表吗?然后我可以使用 FindRef 来查看它来自哪里。
例如:
new 0xaebc28 : SV = PVGV(0x30e7e48) at 0xaebc28
REFCNT = 1
FLAGS = (GMG,SMG)
IV = 0
NV = 0
PV = 0
MAGIC = 0x2db7dc0
MG_VIRTUAL = &PL_vtbl_glob
MG_TYPE = PERL_MAGIC_glob(*)
MG_OBJ = 0xaebc28
NAME = "SUPER::"
NAMELEN = 7
GvSTASH = 0x76b228 "IO::File"
GP = 0x314b170
SV = 0x30283c8
REFCNT = 1
IO = 0x0
FORM = 0x0
AV = 0x0
HV = 0x301fdb8
CV = 0x0
CVGEN = 0x0
GPFLAGS = 0x0
LINE = 161
FILE = "/mypath/perl_install/perl/lib/5.8.9/x86_64-linux/IO/File.pm"
FLAGS = 0x0
EGV = 0xaebc28 "SUPER::"
或一堆较小的条目:
new 0x161c268 : SV = RV(0x3029b40) at 0x161c268
REFCNT = 1
FLAGS = (ROK)
RV = 0x161c218
我该怎么办?我得到了 Perl 结构的东西(magic、iv、pv,..),但是我如何从这些行中知道我的泄漏发生在哪里?
看一眼开发::LeakTrace http://search.cpan.org/~rclamp/Devel-LeakTrace-0.05/lib/Devel/LeakTrace.pm对于还记录内存分配位置的模块。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)