See what your code's doing
#!/usr/bin/perl -d:CallTrace
package foo;
sub bar {
print \*(L"bar\n\*(R"; baz();
}
sub baz {
print \*(L"boo\n\*(R";
}
foo::bar();
There are a number of perl modules in the \s-1CPAN\s0 that are designed to trace a program's execution as it runs. Each uses a different trick to do its job, but none of them quite met my needs. The technique this module uses is quite simple and seems to be quite robust.
perl will automatically call DB::sub on each subroutine call and leave it up to us to dispatch to where we want to go.
This routine is called with two parameters:
The integer \*(L"depth\*(R" that this call is being called at.
A reference to the routine's @INC
To get at the subroutine that was being called, have a look at $DB::sub
It uses the debugger. How could it not have bugs?
perldebguts, \s-1DB\s0, a licensed therapist.
trace - Uses source filters. Scares me.
Devel::TraceCalls - Very robust \s-1API\s0. The code seems to do all sorts of scary magic
Debug::Trace - Uses symbol table magic to wrap your functions.
Devel::TRaceFuncs - Requires developers to instrument their source files.
Copyright 2005 Jesse Vincent <[email protected]>
This module may be redistributed under the same terms as perl itself