2012-09-19 23 views
1

我使用Python來調用我的許多Java程序。是否可以對Python和Java使用調試透視圖並同時追蹤兩種語言的進度?謝謝同時調試python和Java

+0

你有什麼環境,您使用什麼工具進行調試? – Hulk

+0

也許使用配置了遠程調試的Java的兩個不同Eclipse實例(或Eclipse和Netbeans)? – Raffaele

+0

@Raffaele你不會遇到運行程序的不同實例的問題嗎?如果你想在調試不同的IDE(比如一個IDE調用從Java對象,該對象不進行其他IDE,因爲它們是在不同的內存緩衝區兩個不同的過程),據我所知,NetBeans和Eclipse彼此不是原子的。 – Killrawr

回答

0

我使用Python來調用我的許多Java程序。 是否可以對Python和Java使用調試透視圖並同時跟蹤兩種語言的進度?感謝

不,我知道的(SO: CBT and Java on Eclipse Debug)。您可以嘗試使用其他調試方法,例如使用log4j(針對您的Java異常等)記錄事件,或者使用junitpyunit單元測試技術來構建ant script,並針對優質coverage

試試這個網站Testing Java with Jython and PyUnit,我想這就是你以後的樣子。

JUnit的,由Erich Gamma和Kent Beck編寫的單元測試框架,是不是在Java環境單元測試的唯一選擇。 本文提供了一個關於如何使用Jython,PyUnit和Ant來單元測試Java項目的簡單演示。爲了提供更好的比較元素,所提供的示例與JUnit發行版中提供的示例相同:MoneyTest。

本文假設讀者有單元測試的一些基本知識,的Java,Jython或Python的可能Apache Ant的。有關這些技術的更多信息,請參閱本文末尾的參考資料部分。 (Burgaud,2012)

祝你好運!

2

我下載了兩個不同的Eclipse,一個用於JavaSE,另一個用於PyDev。 Python腳本以遠程調試模式啓動JVM,然後其他Eclipse實例通過遠程調試連接到此JVM。這樣,即使在兩個不同的IDE中,也可以調試Python和Java代碼(我不知道這是否可以在同一個實例中完成,即如果兩個調試會話可以存在於同一個Eclipse實例中,不關心,因爲我爲Python,Java,Scala,Android使用不同的Eclipse實例...)

創建以下Java程序並導出可運行JAR,例如在位置/home/raffaele/hello.jar,並在該位置設置斷點與System.out.println()

public class HelloWorld { 

    public static void main(String[] args) { 
     for (int i = 0; i < 10; i++) 
      System.out.println(i); 
    } 

} 

線創建一個Python腳本,在線print i添加斷點和命中調試的Python腳本 。子進程輸出應該被重定向到Eclipse控制檯,您應該看到消息地址監聽運輸dt_socket:8000

import subprocess 

subprocess.call(["java", "-jar", "-Xdebug", 
       "-Xrunjdwp:transport=dt_socket,address=8000,server=y", 
       "/home/raffaele/hello.jar"]) 

for i in range(1, 10): 
    print i 

在這一點上,在JavaSE的Eclipse實例,創建遠程調試配置:運行>調試配置,在左邊欄中選擇遠程Java應用程序和正確的選擇一個名字,主機localhost,運輸socket端口8000。打應用,然後調試。 JavaSE實例中的Debug透視圖將打開,您將在System.out.println處看到您的代碼被暫停。在右側窗格中,您可以檢查本地變量,例如i = 0。命中10次恢復和PyDev的情況下會閃爍,因爲Python的斷點被擊中。