第五章 调试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如下:
然后这样开启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命令会跳入所调用的函数内部。
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;
my $var = { name => 'xiaosheng'}; |
然后这样开启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命令会跳入所调用的函数内部。
相关阅读 更多 +