Devel-LeakGuard-Object

 view release on metacpan or  search on metacpan

lib/Devel/LeakGuard/Object.pm  view on Meta::CPAN

package Devel::LeakGuard::Object;

use 5.008;

use strict;
use warnings;

use Carp;
use Data::Dumper;
use Scalar::Util qw( blessed refaddr weaken );

use Devel::LeakGuard::Object::State;

use base qw( Exporter );

our @EXPORT_OK = qw( track leakstate status leakguard );

our %OPTIONS = (
    at_end => 0,
    stderr => 0
);

our ( %DESTROY_NEXT, %DESTROY_ORIGINAL, %DESTROY_STUBBED, %OBJECT_COUNT,
    %TRACKED );

=encoding utf8

=head1 NAME

Devel::LeakGuard::Object - Scoped checks for object leaks

=head1 VERSION

This document describes Devel::LeakGuard::Object version 0.08

=cut

our $VERSION = '0.08';

=head1 SYNOPSIS

  # Track a single object
  use Devel::LeakGuard::Object;
  my $obj = Foo::Bar->new;
  Devel::LeakGuard::Object::track($obj);

  # Track every object
  use Devel::LeakGuard::Object qw( GLOBAL_bless );

  # Track every object, summary at exit
  use Devel::LeakGuard::Object qw( GLOBAL_bless :at_end );

  # Track a block of code, warning on leaks
  leakguard {
      # your potentially leaky code here
  };

  # Track a block of code, die on leaks
  leakguard {
      # your potentially leaky code here
  }
  on_leak => 'die';

=head1 DESCRIPTION

This module provides tracking of objects, for the purpose of
detecting memory leaks due to circular references or innappropriate
caching schemes.

It is derived from, and backwards compatible with Adam Kennedy's



( run in 2.264 seconds using v1.01-cache-2.11-cpan-99c4e6809bf )