我是mojolicious的新手,但已经使用Perl一段时间了。我必须跳过一些箍,但我可以让交互式Perl调试器(和Komodo)使用Apache的远程连接,但我找不到有关hypnotoad或morbo的交互式调试的任何信息。
http://mojolicio.us/perldoc/Mojolicious/Guides/Tutorial#Hello-World基础教程中的命令行示例工作正常,因为您可以使用perl -d启动它们,但我还是看不到告诉hypnotoadctl脚本将服务置于交互式调试中模式ala apache。
这不可能吗?提示?提示?指针?
答案 0 :(得分:7)
morbo
和hypnotoad
是perl程序,因此您可以使用-d
开关启动它们。
perl -d $(which morbo) myMojoApp.pl
在你的应用程序周围撒上一堆$DB::single = 1
语句可能最容易,你希望你的初始断点去运行c
作为第一个调试器命令。当您运行遇到断点的请求时,您将在启动morbo
的终端中收到调试器提示。
hypnotoad
与调试器一起使用将更加棘手,因为它会快速关闭所有标准文件句柄,多次调用fork
,并成为一个守护进程。
答案 1 :(得分:2)
作为JHThorsen points out,标准的Mojolicious测试实际上是普通的Perl脚本,因此您可以使用以下命令调试测试:
perl -d t/mytest.t
-Ilib
将lib/
目录添加到@INC包含列表中,以便加载模块。
一个问题是许多模块在执行时才加载,所以如果调试器对你尚未加载的符号感到困扰,你可能想在强制调试提示后设置断点。小心插入
$DB::single = 1;
答案 2 :(得分:1)
感谢'pink_mist'。你可以这样做:
perl -d myMojoApp.pl daemon -l http://*:29849
但是应用程序配置不适用。我不知道为什么。