2015-08-14 49 views
7

我是新來的mojolicious,但一段時間以來一直在使用Perl。我不得不跳過一些箍環,但我可以得到交互式Perl調試器(和Komodo)與Apache的遠程連接,但我找不到有關使用hypnotoad或morbo進行交互式調試的任何信息。如何用hypnotoad或morbo調用交互式Perl調試?

http://mojolicio.us/perldoc/Mojolicious/Guides/Tutorial#Hello-World基本教程中的命令行示例正常工作,因爲您可以使用perl -d啓動它們,但是我還是看不到要告訴hypnotoadctl腳本將服務置於交互式調試模式ala apache。

這不可能嗎?提示?提示?指針?

回答

6

morbohypnotoad是perl程序,因此您可以使用-d開關啓動它們。

perl -d $(which morbo) myMojoApp.pl 

這可能比較容易撒了一堆你身邊的應用$DB::single = 1報表,您希望您最初的斷點去運行c作爲第一個調試器命令。當您運行碰到斷點的請求時,您將在啓動morbo的終端中獲得調試器提示。

hypnotoad與調試器一起使用會更復雜,因爲它可以快速關閉所有標準文件句柄,多次調用fork,併成爲一個守護進程。

+3

'hypnotoad'是爲生產使用而設計的,所以希望您在需要之前修復了所有錯誤。 :) – friedo

+0

'hypnotoad' exec線程只是退出,所以調試器接口丟失; 'morbo'出現錯誤:'#########分叉,但不知道如何創建新的TTY。 #########' –

1

感謝'pink_mist'。你可以這樣做:

perl -d myMojoApp.pl daemon -l http://*:29849 

但是應用程序配置不適用。我不知道爲什麼。

2

由於JHThorsen points out,標準Mojolicious測試實際上是普通的Perl腳本,這樣你就可以調試測試:

perl -d t/mytest.t 

-Ilib添加lib/目錄到@INC包括列表,使您的模塊將被載入。

一個問題是許多模塊直到執行時間才加載,所以如果調試器對您尚未加載的符號感到困擾,您可能需要在仔細插入調試提示符後設置斷點

$DB::single = 1;