簡體   English   中英

如何在同一調試會話中調試Eclipse中的Java和Perl代碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM