Net::Inspect::Debug(3p)

NAME
Net::Inspect::Debug - provides debugging facilities for Net::Inspect library

DESCRIPTION
the following functionality is provided:

debug(msg,[@args])
    if $DEBUG is set prints out debugging message, prefixed with "DEBUG" and info about calling function and code line. If @args are given "msg" is considered and format string which will be combined with @args to the final message.

    This function is exported by default.

xdebug(object,...)
    Same es debug, but prefixed with object. Usually overwritten in classes to show info about object.

    This function can be exported on demand.

trace(msg,[@args])
    if $TRACE{'*'} or $TRACE{$$pkg}' is set prints out trace message, prefixed with "[$pkg]". $pkg is the last part of the package name, where trace got called. If @args are given "msg" is considered and format string which will be combined with @args to the final message.

    This function is exported by default.

xtrace(object,...)
    Same es trace, but prefixed with object. Usually overwritten in classes to show info about object.

    This function can be exported on demand.

$DEBUG
    If true debugging messages will be print. Can be explicitly imported, but is not exported by default.

$DEBUG_RX
    This variable can contain a regex. If set, only debugging within packages matching the regex will be enabled, but only if c<$DEBUG> is also true.

    Can be explicitly imported, but is not exported by default.

%TRACE
    If true for '*' or $pkg (see "trace") trace messages will be print. Can be explicitly imported, but is not exported by default.

To integrate the debugging of Net::Inspect with other debugging frameworks one has to call one of

  Net::Inspect::Debug var => \$myDEBUG, sub => \&my_debug;
  Net::Inspect::Debug var => \$myDEBUG, output => \&my_output;

as early as possible (before any modules using Net::IMPs debug functionality get loaded).

var => \$myDEBUG
    This make the local $DEBUG variable an alias for $myDEBUG. $myDEBUG needs to be a global variable, lexical variables will not work.

sub => \&my_debug
    This will call "my_debug" with the debug message instead of using the builtin implementation.

output => \&my_output
    This will call "my_output" instead of the printing to STDERR done within the internal (x)debug and (x)trace functions.

To ease debugging one could give a number "D" of "debugD" as debug level directly when importing the module, e.g.

   perl -MNet::Inspect::Debug=10 ...
   use Net::Inspect::Debug 'debug10';