Tracing DBI Execution
DBI sports an extremely useful ability to generate runtime tracing information of what it’s doing, which can be a huge time-saver when trying to track down strange problems in your DBI programs.
At the highest level, you
can call the
which enables tracing on all DBI operations from that point onwards.
There are several valid tracing levels:
Traces DBI method execution showing returned values and errors.
As for 1, but also includes method entry with parameters.
As for 2, but also includes more internal driver trace information.
Levels 4, and above can include more detail than is helpful.
trace() method can be used with two
argument forms, either specifying only
the trace level or specifying both the trace level and a file to
which the trace information is appended. The following example shows
the use of
#!/usr/bin/perl -w # # ch04/util/trace1: Demonstrates the use of DBI tracing. use DBI; ### Remove any old trace files unlink 'dbitrace.log' if -e 'dbitrace.log'; ### Connect to a database my $dbh = DBI->connect( "dbi:Oracle:archaeo", "username", "password" ); ### Set the tracing level to 1 and prepare() DBI->trace( 1 ); doPrepare(); ### Set trace output to a file at level 2 and prepare() DBI->trace( 2, 'dbitrace.log' ); doPrepare(); ### Set the trace output back to STDERR at level 2 and prepare() DBI->trace( 2, undef ); doPrepare(); exit; ### prepare a statement (invalid to demonstrate tracing) sub doPrepare ...