.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Leak 3pm" .TH Leak 3pm 2024-03-07 "perl v5.38.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NAME Devel::Leak \- Utility for looking for perl objects that are not reclaimed. .SH SYNOPSIS .IX Header "SYNOPSIS" .Vb 2 \& use Devel::Leak; \& ... setup code \& \& my $count = Devel::Leak::NoteSV($handle); \& \& ... code that may leak \& \& Devel::Leak::CheckSV($handle); .Ve .SH DESCRIPTION .IX Header "DESCRIPTION" Devel::Leak has two functions \f(CW\*(C`NoteSV\*(C'\fR and \f(CW\*(C`CheckSV\*(C'\fR. .PP \&\f(CW\*(C`NoteSV\*(C'\fR walks the perl internal table of allocated SVs (scalar values) \- (which actually contains arrays and hashes too), and records their addresses in a table. It returns a count of these "things", and stores a pointer to the table (which is obtained from the heap using \fBmalloc()\fR) in its argument. .PP \&\f(CW\*(C`CheckSV\*(C'\fR is passed argument which holds a pointer to a table created by \&\f(CW\*(C`NoteSV\*(C'\fR. It re-walks the perl-internals and calls \fBsv_dump()\fR for any "things" which did not exist when \f(CW\*(C`NoteSV\*(C'\fR was called. It returns a count of the number of "things" now allocated. .SH CAVEATS .IX Header "CAVEATS" Note that you need a perl built with \-DDEBUGGING for \&\fBsv_dump()\fR to print anything, but counts are valid in any perl. .PP If new "things" \fIhave\fR been created, \f(CW\*(C`CheckSV\*(C'\fR may (also) report additional "things" which are allocated by the \fBsv_dump()\fR code. .SH HISTORY .IX Header "HISTORY" This little utility module was part of Tk until the variable renaming in perl5.005 made it clear that Tk had no business knowing this much about the perl internals. .SH AUTHOR .IX Header "AUTHOR" Nick Ing-Simmons