X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Manual.git;a=blobdiff_plain;f=lib%2FCatalyst%2FManual%2FTutorial%2FDebugging.pod;fp=lib%2FCatalyst%2FManual%2FTutorial%2FDebugging.pod;h=0000000000000000000000000000000000000000;hp=fe78ff2752663562b30b866d245a0b8ba8b9bc92;hb=3ab6187c1a123983b6ae29e57f543328ce15755c;hpb=418ded01713d313bdc03308ced5b0cc408682e24 diff --git a/lib/Catalyst/Manual/Tutorial/Debugging.pod b/lib/Catalyst/Manual/Tutorial/Debugging.pod deleted file mode 100644 index fe78ff2..0000000 --- a/lib/Catalyst/Manual/Tutorial/Debugging.pod +++ /dev/null @@ -1,380 +0,0 @@ -=head1 NAME - -Catalyst::Manual::Tutorial::Debugging - Catalyst Tutorial - Chapter 7: Debugging - - -=head1 OVERVIEW - -This is B for the Catalyst tutorial. - -L - -=over 4 - -=item 1 - -L - -=item 2 - -L - -=item 3 - -L - -=item 4 - -L - -=item 5 - -L - -=item 6 - -L - -=item 7 - -B - -=item 8 - -L - -=item 9 - -L - -=item 10 - -L - -=back - - -=head1 DESCRIPTION - -This chapter of the tutorial takes a brief look at the primary options -available for troubleshooting Catalyst applications. - -Note that when it comes to debugging and troubleshooting, there are two -camps: - -=over 4 - -=item * - -Fans of C and C statements embedded in the code. - -=item * - -Fans of interactive debuggers. - -=back - -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: - - $c->log->info("Starting the foreach loop here"); - - $c->log->debug("Value of \$id is: ".$id); - -Then the Catalyst development server will display your message along -with the other debug output. To accomplish the same thing in a TT -template view use: - - [% c.log.debug("This is a test log message") %] - -As with many other logging facilities, you a method is defined for -each of the following "logging levels" (in increasing order of -severity/importance): - - $c->log->debug - $c->log->info - $c->log->warn - $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) %]>. - - -=head1 RUNNING CATALYST UNDER THE PERL DEBUGGER - -Members of the interactive-debugger fan club will also be at home with -Catalyst applications. One approach to this style of Perl debugging is -to embed breakpoints in your code. For example, open -C in your editor and add the -C line as follows inside the C method (I like to -"left-justify" my debug statements so I don't forget to remove them, but -you can obviously indent them if you prefer): - - sub list : Local { - # Retrieve the usual Perl OO '$self' for this object. $c is the Catalyst - # '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). - -B The C here is the Perl Debugger, not the DB model. - -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