| Carp-Trace documentation | view source | Contained in the Carp-Trace distribution. |
Carp::Trace - simple traceback of call stacks
use Carp::Trace;
sub flubber {
die "You took this route to get here:\n" .
trace();
}
Carp::Trace provides an easy way to see the route your script took to
get to a certain place. It uses simple caller calls to determine
this.
trace is a function, exported by default, that gives a simple
traceback of how you got where you are. It returns a formatted string,
ready to be sent to STDOUT or STDERR.
Optionally, you can provide a DEPTH argument, which tells trace to
only go back so many levels. The OFFSET argument will tell trace to
skip the first [OFFSET] layers up.
If you provide a true value for the ARGS parameter, the arguments
passed to each callstack will be dumped using Data::Dumper.
This might slow down your trace, but is very useful for debugging.
See also the Global Variables section.
trace is able to tell you the following things:
@_ was created for this function eval, require or use eval, what the eval-string is The output from the following code:
use Carp::Trace;
sub foo { bar() };
sub bar { $x = baz() };
sub baz { @y = zot() };
sub zot { print trace() };
eval 'foo(1)';
Might look something like this:
main::(eval) [5]
foo(1);
void - no new stash
x.pl line 1
main::foo [4]
void - new stash
(eval 1) line 1
main::bar [3]
void - new stash
x.pl line 1
main::baz [2]
scalar - new stash
x.pl line 1
main::zot [1]
list - new stash
x.pl line 1
Sets the depth to be used by default for trace. Any depth argument
to trace will override this setting.
Sets the offset to be used by default for trace. Any offset
argument to trace will override this setting.
Sets a flag to indicate that a trace should dump all arguments for
every call stack it's printing out. Any args argument to trace
will override this setting.
This module by Jos Boumans <kane@cpan.org>.
This module is copyright (c) 2002 Jos Boumans <kane@cpan.org>. All rights reserved.
This library is free software; you may redistribute and/or modify it under the same terms as Perl itself.
| Carp-Trace documentation | view source | Contained in the Carp-Trace distribution. |