加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 如何解释Devel :: Leak的输出

发布时间:2020-12-15 22:01:37 所属栏目:大数据 来源:网络整理
导读:我在我的程序中运行了 Devel::Leak ,我不明白它给我的输出. 要开始,我看到它打印了一个指针列表.我可以在列表中获取该列表吗?然后我可以使用FindRef来查看它的来源. 例如: new 0xaebc28 : SV = PVGV(0x30e7e48) at 0xaebc28 REFCNT = 1 FLAGS = (GMG,SMG)
我在我的程序中运行了 Devel::Leak,我不明白它给我的输出.

要开始,我看到它打印了一个指针列表.我可以在列表中获取该列表吗?然后我可以使用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结构的东西(魔术,iv,pv,..),但是如何从这些行去知道我的泄漏发生在哪里?

解决方法

看看 Devel::LeakTrace的一个模块,它还记录了内存被分配的位置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读