X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Manual.git;a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial%2F07_Debugging.pod;h=faca57fc22aa08b6e593930615167ba6f146d323;hp=f46b9a8e17f244de1b4f7dc1937aecc53b979afc;hb=429d1caf111575afa4c25287cc48d7ed712af327;hpb=532433240eb30ab0ea416cd43bfd5bbe70dfa661 diff --git a/lib/Catalyst/Manual/Tutorial/07_Debugging.pod b/lib/Catalyst/Manual/Tutorial/07_Debugging.pod index f46b9a8..faca57f 100644 --- a/lib/Catalyst/Manual/Tutorial/07_Debugging.pod +++ b/lib/Catalyst/Manual/Tutorial/07_Debugging.pod @@ -56,19 +56,25 @@ L =head1 DESCRIPTION -This chapter of the tutorial takes a brief look at the primary options +This chapter of the tutorial takes a brief look at the primary options available for troubleshooting Catalyst applications. +Source code for the tutorial in included in the F +directory of the Tutorial Virtual machine (one subdirectory per +chapter). There are also instructions for downloading the code in +L. + + Note that when it comes to debugging and troubleshooting, there are two camps: =over 4 -=item * +=item * Fans of C and C statements embedded in the code. -=item * +=item * Fans of interactive debuggers. @@ -79,9 +85,9 @@ Catalyst is able to easily accommodate both styles of debugging. =head1 LOG STATEMENTS -Folks in the former group can use Catalyst's C<$c-Elog> facility. -(See L for more detail.) For example, if -you add the following code to a controller action method: +Folks in the former group can use Catalyst's C<< $c->log >> facility. +(See L for more detail.) For example, if you add the +following code to a controller action method: $c->log->info("Starting the foreach loop here"); @@ -93,8 +99,8 @@ template view use: [% c.log.debug("This is a test log message") %] -As with many other logging facilities, a method is defined for -each of the following "logging levels" (in increasing order of +As with many other logging facilities, a method is defined for each of +the following "logging levels" (in increasing order of severity/importance): $c->log->debug @@ -103,9 +109,21 @@ severity/importance): $c->log->error $c->log->fatal -You can also use L in both Catalyst code -(Clog-Edebug("\$var is: ".Dumper($var));)>) -and TT templates (C<[% Dumper.dump(book) %]>. +You can also use Data::Dumper in both Catalyst code and in TT templates. +For use in Catalyst code: + + use Data::Dumper; + $c->log->debug("\$var is: ".Dumper($c->stash->{something})); + +and TT templates: + + [% USE Dumper ; Dumper.dump(c.stash.something) %]. + +B Whether you are a logging fanatic or not, we strongly recommend +that you take advantage of L or L. It's +easy to use L with either of these and they will provide +a huge amount of extra functionality that you will want in virtually +every production application you run or support. =head1 RUNNING CATALYST UNDER THE PERL DEBUGGER @@ -123,20 +141,21 @@ you can obviously indent them if you prefer): # 'Context' that's used to 'glue together' the various components # that make up the application my ($self, $c) = @_; - + $DB::single=1; - + # Retrieve all of the book records as book model objects and store in the # stash where they can be accessed by the TT template $c->stash->{books} = [$c->model('DB::Book')->all]; - + # Set the TT template to use. You will almost always want to do this # in your action methods. $c->stash->{template} = 'books/list.tt2'; } -This causes the Perl Debugger to enter "single step mode" when this command is -encountered (it has no effect when Perl is run without the C<-d> flag). +This causes the Perl Debugger to enter "single step mode" when this +command is encountered (it has no effect when Perl is run without the +C<-d> flag). B The C here is the Perl Debugger, not the DB model. @@ -144,23 +163,23 @@ If you haven't done it already, enable SQL logging as before: $ export DBIC_TRACE=1 -To now run the Catalyst development server under the Perl debugger, simply -prepend C to the front of C