同时调试python和Java

时间:2012-09-19 11:33:18

标签: java python debugging

我使用Python来调用我的许多Java程序。是否可以对Python和Java使用调试透视图并同时跟踪两种语言的进度?感谢

2 个答案:

答案 0 :(得分:2)

我下载了两个不同的Eclipse,一个用于JavaSE,另一个用于PyDev。 Python脚本以远程调试模式启动JVM,然后另一个Eclipse实例通过远程调试连接到此JVM。这样你就可以调试Python和Java代码,即使在两个不同的IDE中也是如此(我不知道这是否可以在同一个实例中完成,即如果两个调试会话可以存在于同一个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行添加一个断点,然后点击 Debug作为Python脚本。应将子进程输出重定向到Eclipse控制台,您应该看到消息侦听传输dt_socket at address: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实例中,创建一个远程调试配置:运行&gt; 调试配置,在左栏中选择远程Java应用程序,在右侧选择一个名称,主机localhost,传输socket端口{{ 1}}。点击 Apply ,然后点击 Debug 。将打开JavaSE实例中的Debug透视图,您将看到代码在8000处暂停。在右窗格中,您可以检查局部变量,例如System.out.println。按 Resume 10次,PyDev实例将闪烁,因为Python断点已被命中。

答案 1 :(得分:0)

  

我使用Python来调用我的许多Java程序。 是否可以对Python和Java使用调试透视图并同时跟踪两种语言的进度?​​ 谢谢

我不知道(SO: CBT and Java on Eclipse Debug)。您可以尝试其他调试方法,例如使用log4j记录事件(对于您的Java异常等),或者使用ant scriptjunit单元测试技术构建pyunit ,并瞄准好coverage

试试这个网站Testing Java with Jython and PyUnit,我认为这就是您的目标。

  

由Erich Gamma和Kent Beck编写的单元测试框架JUnit不是Java环境中单元测试的唯一替代方案。 本文简要演示了如何使用Jython,PyUnit和Ant对Java项目进行单元测试。 为了提供更好的比较元素,提供的示例与JUnit发行版中可用的那个:MoneyTest。

     

本文假设读者具有单元测试的一些基本知识, Java ,Jython或 Python ,可能还有 Apache Ant 。有关每种技术的更多信息,请参阅本文末尾的参考资料部分。 (Burgaud,2012)

祝你好运!