设定:

我正在研究一个Java项目,该项目调用了一些Perl脚本。

问题:

如果我从终端运行Perl脚本,它将运行正常。但是,当我从Java代码中使用相同的参数调用相同的Perl脚本时,它将失败。这是一个非常奇怪和烦人的错误。

我可以使用EPIC插件在Eclipse中调试Perl。当然,我可以调试Java代码。在Eclipse的同一调试会话中调试Java和Perl代码将很有帮助,这样我可以看到通过Java代码调用脚本时发生了什么不同。

不知道这是否有可能,但是如果有人有任何想法,请分享。

谢谢。

最佳答案

我认为Perl具有一些远程调试功能,因此您可以得到所需的东西。我不使用EPIC,所以我不知道您是否能够在Eclipse中完成所有操作。

将名为PERLDB_OPTS的环境变量设置为值RemotePort=<host>:<port>。然后,使用-d标志启动Perl。调试器将尝试连接到host:port,而不是尝试与调用终端上的标准IO进行交互。

这是一个Unix-y示例。我有一个Perl脚本hello.pm,并且打开了两个终端窗口。



第一航站楼

$ nc -l 12345


这样就启动了NetCat,使其成为在端口12345上监听的哑服务器。如果在Perl启动之前没有服务器在监听,它将无法正常工作。

第二航站楼

$ export PERLDB_OPTS=RemotePort=localhost:12345     # set the env variable
$ perl -d hello.pm


现在脚本正在运行。回到第一个航站楼,我看到了

第一航站楼

main::(hello.pm:1): print "hello\n";
  DB<1>


我在Perl调试器中,可以开始使用!



我知道至少Komodo IDE支持远程调试,并且doing it with Emacs上有Perl Monks帖子,因此即使不是Eclipse,您也可以获得比命令行更多的东西。善于寻找错误!

09-04 05:25
查看更多