Test::LeakTrace::JA(3) User Contributed Perl Documentation NAME Test::LeakTrace::JA - VERSION This document describes Test::LeakTrace version 0.17. SYNOPSIS use Test::LeakTrace; # simple report leaktrace{ # ... }; # verbose output leaktrace{ # ... } -verbose; # with callback leaktrace{ # ... } sub { my($ref, $file, $line) = @_; warn "leaked $ref from $file line\n"; }; my @refs = leaked_refs{ # ... }; my @info = leaked_info{ # ... }; my $count = leaked_count{ # ... }; # standard test interface use Test::LeakTrace; no_leaks_ok{ # ... } "description"; leaks_cmp_ok{ # ... } '<', 10; DESCRIPTION PerlGC C "Test::LeakTrce""Test::Builder"PerlSVPerlXSPerl Perl INTERFACE Exported functions "leaked_info { BLOCK }" BLOCK "[$ref, $file, $line]" PerlPerlPerl"Data::Dumper" "leaked_refs { BLOCK }" BLOCKSV "map{ $_->[0] } leaked_info{ BLOCK }" "leaked_count { BLOCK }" BLOCKSV leaked_info()leaked_refs() leaked_count() "leaktrace { BLOCK } ?($mode | \&callback)" BLOCK*STDERR $mode $mode -simple SV -sv_dump -simplesv_dump()SV Devel::Peek::Dump() -lines -simple -verbose -simple-sv_dump-lines \&callbackSVSV3 "no_leaks_ok { BLOCK } ?$description" BLOCK "Test::Builder" BLOCK "leaks_cmp_ok { BLOCK } $cmp_op, $count, ?$description" BLOCK "Test::Builder" BLOCK Script interface "Devel::LeakTrace""Test::LeakTrace::Script""use Test::LeakTrace::Script"leaktrace() $ TEST_LEAKTRACE=-sv_dump perl -MTest::LeakTrace::Script script.pl $ perl -MTest::LeakTrace::Script=-verbose script.pl #!perl # ... use Test::LeakTrace::Script sub{ my($ref, $file, $line) = @_; # ... }; # ... EXAMPLES Testing modules #!perl -w use strict; use constant HAS_LEAKTRACE => eval{ require Test::LeakTrace }; use Test::More HAS_LEAKTRACE ? (tests => 1) : (skip_all => 'require Test::LeakTrace'); use Test::LeakTrace; use Some::Module; leaks_cmp_ok{ my $o = Some::Module->new(); $o->something(); $o->something_else(); } '<', 1; GUTS "Test::LeakTrace"PerlSVsv.c sv.cS_visit() SVSVSVSV Perl my %used_sv; foreach my $sv(@ARENA){ $used_sv{$sv}++; } $block->(); my @leaked foreach my $sv(@ARENA){ if(not exists $used_sv{$sv}){ push @leaked, $sv; } } say 'leaked count: ', scalar @leaked; SVleaked_refs()leaked_count()SV SVPerl 5.10SV"-DDEBUG_LEAKING_SCALARS"Perl "Test::LeakTrace""PL_runops"Perl VMOP11Perl no_leaks_ok()leaked_count()SVleaktrace() DEPENDENCIES Perl 5.8.1 or later, and a C compiler. CAVEATS "Test::LeakTrace""Devel::Cover" "Devel::Cover" BUGS No bugs have been reported. Please report any bugs or feature requests to the author. SEE ALSO Devel::LeakTrace. Devel::LeakTrace::Fast. Test::TraceObject. Test::Weak. For guts: perlguts. perlhack. sv.c. AUTHOR Goro Fuji . LICENSE AND COPYRIGHT Copyright (c) 2009, Goro Fuji. Some rights reserved. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.38.0 2023-07-26 Test::LeakTrace::JA(3)