1Test::LeakTrace::JA(3)User Contributed Perl DocumentationTest::LeakTrace::JA(3)
2
3
4

NAME

6       Test::LeakTrace::JA - XXXXXXXXXXX
7

VERSION

9       This document describes Test::LeakTrace version 0.13.
10

SYNOPSIS

12               use Test::LeakTrace;
13
14               # simple report
15               leaktrace{
16                       # ...
17               };
18
19               # verbose output
20               leaktrace{
21                       # ...
22               } -verbose;
23
24               # with callback
25               leaktrace{
26                       # ...
27               } sub {
28                       my($ref, $file, $line) = @_;
29                       warn "leaked $ref from $file line\n";
30               };
31
32               my @refs = leaked_refs{
33                       # ...
34               };
35               my @info = leaked_info{
36                       # ...
37               };
38
39               my $count = leaked_count{
40                       # ...
41               };
42
43               # standard test interface
44               use Test::LeakTrace;
45
46               no_leaks_ok{
47                       # ...
48               } "description";
49
50               leaks_cmp_ok{
51                       # ...
52               } '<', 10;
53

DESCRIPTION

55       PerlXGCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
56       XXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
57
58       "Test::LeakTrce"XXXXXXXXXXXXXXXXXXXXXXXXXXXX"Test::Builder"XXXXXXXXXXXXXXXXXXXXXXXXPerlXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXPerlXXXXXXXXXXXXXXXXXSXXXXXXPerlXXXXXXXXXXXXXXXXXXXXXXXXXXX
59
60       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXPerlXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
61

INTERFACE

63   Exported functions
64       "leaked_info { BLOCK }"
65
66       BLOCKXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"[$ref,
67       $file, $line]"XXXXXXXXXXXX
68
69       XXXXXXXXPerlXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXPerlXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXPerlXXXXXXXXXXXXXXXXXXXXX"Data::Dumper"XXXXXXXXXXXXXXXX
70
71       "leaked_refs { BLOCK }"
72
73       BLOCKXXXXXXXXXXSVXXXXXXXXXXXXXXXXX
74
75       "map{ $_->[0] } leaked_info{ BLOCK }"XXXXXXXXXXXXXX
76
77       "leaked_count { BLOCK }"
78
79       BLOCKXXXXXXXXXXSVXXXXXXXXXXXXXXXX
80
81       "leaked_info()"X"leaked_refs()"XXXXXXXXXXXXXXXXXXXXX
82       "leaked_count()"XXXXXXXXXXXXXXX
83
84       "leaktrace { BLOCK } ?($mode | \&callback)"
85
86       BLOCKXXXXXXXXXXXXXXXXXXX*STDERRXXXXXXX
87
88       XXXXXXXXXX$modeXXXXXXXXXXXXXX XXXXX$modeXXXXXXXXX
89
90       -simple
91           XXXXXXXXXXXXXXXXXSVXXXXXXXXXXXXXXXXXXXXXXXX
92
93       -sv_dump
94           -simpleXXXXX"sv_dump()"XSVXXXXXXXXXXX
95           XXXX"Devel::Peek::Dump()"XXXXXXXXXXX
96
97       -lines
98           -simpleXXXXXXXXXXXXXXXXXXXXXXXXXXXX
99
100       -verbose
101           -simpleX-sv_dumpX-linesXXXXXXXXXX
102
103       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
104       \&callbackXXXXXXSVXXXXXXXXXXXXXXXXXXSVXXXXXXXXXXXXXXXXXX3XXXX
105
106       "no_leaks_ok { BLOCK } ?$description"
107
108       BLOCKXXXXXXXXXXXXXXXXXXX XXX"Test::Builder"XXXXXXXXXXXX
109
110       XXXBLOCKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
111
112       "leaks_cmp_ok { BLOCK } $cmp_op, $count, ?$description"
113
114       BLOCKXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXX"Test::Builder"XXXXXXXXXXXX
115
116       XXXBLOCKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
117
118   Script interface
119       "Devel::LeakTrace"XXXXXXXXXXXXXXXXXXXX"Test::LeakTrace::Script"XXXXXXXX"use
120       Test::LeakTrace::Script"XXXXXX"leaktrace()"XXXXXX
121
122               $ TEST_LEAKTRACE=-sv_dump perl -MTest::LeakTrace::Script script.pl
123               $ perl -MTest::LeakTrace::Script=-verbose script.pl
124
125               #!perl
126               # ...
127
128               use Test::LeakTrace::Script sub{
129                       my($ref, $file, $line) = @_;
130                       # ...
131               };
132
133               # ...
134

EXAMPLES

136   Testing modules
137       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
138
139               #!perl -w
140               use strict;
141               use constant HAS_LEAKTRACE => eval{ require Test::LeakTrace };
142               use Test::More HAS_LEAKTRACE ? (tests => 1) : (skip_all => 'require Test::LeakTrace');
143               use Test::LeakTrace;
144
145               use Some::Module;
146
147               leaks_cmp_ok{
148                       my $o = Some::Module->new();
149                       $o->something();
150                       $o->something_else();
151               } '<', 1;
152

GUTS

154       "Test::LeakTrace"XXXXXXXXXXXXXXXXXXXPerlXXXXXSVXXXXXXXXXXXXXXXXXXXXXXsv.cXXXXXXXXXX
155       XXXXXXXXXsv.cXXX"S_visit()"XXXXXXXXXXXXXXXXXXXX
156
157       XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSVXXXXXXXXXXXXXXXXXXXXXXXXXXXSVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
158       XXXXXPerlXXXXXXXXXXXXXXXXXX
159
160               my %used_sv;
161               foreach my $sv(@ARENA){
162                       $used_sv{$sv}++;
163               }
164               $block->();
165
166               my @leaked
167               foreach my $sv(@ARENA){
168                       if(not exists $used_sv{$sv}){
169                               push @leaked, $sv;
170                       }
171               }
172               say 'leaked count: ', scalar @leaked;
173
174       XXXXXSVXXXXXXXXXXXXXXXXXXXX"leaked_refs()"X"leaked_count()"XXXXXXXXXXXXXXSVXXXXXXXXXXXXX
175
176       XXXXXXXXXSVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXPerl
177       5.10XXXXSVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"-DDEBUG_LEAKING_SCALARS"XXXXPerlXXXXXXXXXXXXXXX
178
179       XXXX"Test::LeakTrace"XXXXXXX"PL_runops"XXXXXXPerl
180       VMXOPXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXPerlXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
181
182       XXX"no_leaks_ok()"XXXXXXXXXXXX"leaked_count()"XXXXXXSVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"leaktrace()"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
183

DEPENDENCIES

185       Perl 5.8.1 or later, and a C compiler.
186

CAVEATS

188       "Test::LeakTrace"X"Devel::Cover"XXXXXXXXXXXXXXXX
189       XXXXXX"Devel::Cover"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
190

BUGS

192       No bugs have been reported.
193
194       Please report any bugs or feature requests to the author.
195

SEE ALSO

197       Devel::LeakTrace.
198
199       Devel::LeakTrace::Fast.
200
201       Test::TraceObject.
202
203       Test::Weak.
204
205       For guts:
206
207       perlguts.
208
209       perlhack.
210
211       sv.c.
212

AUTHOR

214       Goro Fuji <gfuji(at)cpan.org>.
215
217       Copyright (c) 2009, Goro Fuji. Some rights reserved.
218
219       This library is free software; you can redistribute it and/or modify it
220       under the same terms as Perl itself.
221
222
223
224perl v5.12.2                      2010-08-01            Test::LeakTrace::JA(3)
Impressum