[英]How to debug Java and Perl code in Eclipse in same debug session?
我正在研究一個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支持遠程調試,並且有Perl Monks關於使用Emacs進行調試的文章,因此即使不是Eclipse,您也可以獲得比命令行更多的東西。 善於尋找錯誤!
如果我從終端運行Perl腳本,它將運行正常。 但是,當我從Java代碼中使用相同的參數調用相同的Perl腳本時,它將失敗。
我建議您檢查兩個“上下文”中是否正在運行相同版本的Perl。 即,當從命令行和Java運行Perl應用程序時。
如果那不是問題,請檢查環境變量。
解決此問題的另一種方法是關注程序為什么會出錯,而不是上下文如何/為什么不同。 查看您擁有的證據,並查看收集更多證據的方法...
嘗試使用Perl調試器(在IDE或獨立環境中)執行此操作的潛在問題是,您實際上是在第三個“上下文”中運行Perl,這可能不同於現有的一個或兩個。
使用調試器可能會起作用...或者可能會讓您更加困惑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.