Как мне интерпретировать вывод Devel :: Leak - PullRequest
10 голосов
/ 24 августа 2010

Я запустил 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 (magic, iv, pv, ..), но как мне перейти от этих строк кзная, где происходит моя утечка?

1 Ответ

1 голос
/ 27 августа 2010

Посмотрите на Devel :: LeakTrace для модуля, который также записывает, где была выделена память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...