文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>第五章 调试Catalyst程序

第五章 调试Catalyst程序

时间:2007-04-27  来源:xiaoshengcaicai

通过x_server.pl 调试Catalyst程序一般有2种方法:

1. 利用$c->log是最常用的方法。
perl x_server.pl -d会打开x_server的debug标志,
X整个项目加载进来的时候,你可以从屏幕上看到相关的信息,
当有HTTP请求进来的时候, 你也可以从屏幕上看到action的跳转和执行。

你还可以往$c->log里面写一些Debug信息, 然后通过这些输出的Debug信息, 进行分析。
比如想观察某个变量$var的值,那么在action里面编写:
$c->log->debug($var);
或者
use Data::Dumper;
$c->log->debug( Dumper($var) );

这样你可以从屏幕上看到$var的值。

2. 给程序下断点进行调试。这个方法不是很常用。
在action里面加入: $DB::single = 1; 这行代码便可下一个断点。

假设现在的Root.pm如下:

package X::Controller::Root;
use strict;
use warnings;
use base 'Catalyst::Controller';
__PACKAGE__->config->{namespace} = '';
sub default : Private {
    my ( $self, $c ) = @_;
    $c->response->body( $c->welcome_message );
}

sub help : Local {
    my ( $self, $c ) = @_;

    my $var = { name => 'xiaosheng'};
    $DB::single = 1;
    $c->response->body( "What can I do for you?" );
}

sub end : ActionClass('RenderView') {}
1;



然后这样开启x_server:   perl -d x_server.pl
这个时候程序会停留在第一行待执行的代码上。

键入命令c, 程序继续跑,直到整个Catalyst项目加载完毕, 这时x_server处于等待HTTP请求的状态。

访问 http://xxx/help, Catalyst找到了help这个action, 在执行这个action的时候, 当遇到$DB::single = 1;这行代码时程序便停了下来, 这时如果要查看$var的值,
那么键入命令: x $var
便可打印出$var的值。
关于perl debug的详细命令,请参看相关文档, 这里稍微介绍几个:
c   是continue的意思, 让程序继续执行下面的代码
n   是step over, next的意思, 让程序执行当前这行代码
s   是step into的意思, 让程序继续跳进当前这行代码, 比如当前行代码是一个函数调用,那么s命令会跳入所调用的函数内部。
相关阅读 更多 +
排行榜 更多 +
方块枪战战场安卓版

方块枪战战场安卓版

飞行射击 下载
战斗火力射击安卓版

战斗火力射击安卓版

飞行射击 下载
空中防御战安卓版

空中防御战安卓版

飞行射击 下载