1Test::LeakTrace::JA(3)User Contributed Perl DocumentationTest::LeakTrace::JA(3)
2
3
4
6 Test::LeakTrace::JA - XXXXXXXXXXX
7
9 This document describes Test::LeakTrace version 0.13.
10
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
55 PerlXGCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
56 XXXXXXXXXXXXXXXXXXXXCXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
57
58 "Test::LeakTrce"XXXXXXXXXXXXXXXXXXXXXXXXXXXX"Test::Builder"XXXXXXXXXXXXXXXXXXXXXXXXPerlXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXSVXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXPerlXXXXXXXXXXXXXXXXXSXXXXXXPerlXXXXXXXXXXXXXXXXXXXXXXXXXXX
59
60 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXPerlXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
61
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
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
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
185 Perl 5.8.1 or later, and a C compiler.
186
188 "Test::LeakTrace"X"Devel::Cover"XXXXXXXXXXXXXXXX
189 XXXXXX"Devel::Cover"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
190
192 No bugs have been reported.
193
194 Please report any bugs or feature requests to the author.
195
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
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)