---
name: "Devel::CallTrace"
section: "3pm"
platform: "linux"
package: "libdevel-calltrace-perl"
version: "1.2-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Devel::CallTrace"
---

# Devel::CallTrace(3pm)

See what your code's doing

## NAME

Devel::CallTrace - See what your code's doing

## SYNOPSIS

\#!/usr/bin/perl -d:CallTrace

package foo;

sub bar {\
   print "bar\\n";\
   **baz()**; }

sub baz {\
     print "boo\\n"; }

**foo::bar()**;

## RATIONALE

There are a number of perl modules in the CPAN 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.

### DB::sub

perl will automatically call DB::sub on each subroutine call and leave it up to us to dispatch to where we want to go.

### Devel::CallTrace::called

This routine is called with two parameters:

- DEPTH

  The integer "depth" that this call is being called at.

- PARAMS

  A reference to the routine's `@INC`

To get at the subroutine that was being called, have a look at `$DB::sub`

## BUGS

It uses the debugger. How could it not have bugs?

## SEE ALSO

perldebguts, DB, a licensed therapist.

trace - Uses source filters. Scares me.

Devel::TraceCalls - Very robust API. 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

Copyright 2005 Jesse Vincent \<jesse@bestpractical.com\>

This module may be redistributed under the same terms as perl itself
