Devel::Events




Pair Networks
Devel::Events

NAME

Devel::Events - Extensible instrumentation framework.

SYNOPSIS

	use Devel::Events::Generator::Foo;
	use Devel::Events::Handler::Bar;
	use Devel::Events::Filter::Blort;

	my $h = Devel::Events::Generator->new(
		handler => Devel::Event::Filter->new(
			handler => Devel::Events::Handler::Bar->new(),
		),
	);

DESCRIPTION

Devel::Events is an event generation, filtering and analaysis framework for instrumenting and auditing perl code.

The design's purpose is to decouple the mechanics of code instrumentation from the analysis, making it easier to write debugging/profiling tools.

Devel::Events::Generator object fire events, which can be mangled by Devel::Event::Filter objects. Eventually any number of Devel::Event::Handler objects can receive a given event, and perform analysis based on it.

For example Devel::Event::Handler::ObjectTracker can be used to detect leaks.

COMPONENT OVERVIEW

There are two main types of components - generators and handlers.

Filters are special types of handlers that always delegate to another handler.

The multiplex handler may be used to delegate to any number of handlers, and can be the handler for several generators.

Using these basic components complex chains of handlers can be built to properly analyze the events you are interested in.

Generators

Devel::Events::Generator::Objects
Generate object_bless and object_destroy events by overriding CORE::GLOBAL::bless and tracking every object using Variable::Magic.
Devel::Events::Generator::SubTrace
Uses the perl debugger hook to generate enter_sub and leave_sub events.
Devel::Events::Generator::LineTrace
Fires an executing_line event for every line using the perl debugger hook.
Devel::Events::Generator::Require

Fires events for require and c<use> calls.

Handlers

Devel::Events::Handler::Multiplex
Repeat events to multiple handlers.
Devel::Events::Handler::Callback
Make a handler object out of a callback.
Devel::Events::Handler::Log::Memory

Log all events to an array.

Provides filtering and slicing methods to ease analysis.

Devel::Events::Handler::ObjectTracker
Handles object_bless and object_destroy events (as generated by Devel::Events::Generator::Objects) to track the lifetime of objects. When objects lifetimes extend beyond the scope they're supposed to be destroyed in leaks can be detected.}