2

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

4

2 回答 2

3

我下载了两个不同的 Eclipse,一个用于 JavaSE,一个用于 PyDev。Python 脚本以远程调试模式启动 JVM,然后另一个 Eclipse 实例通过远程调试连接到该 JVM。这样,即使在两个不同的 IDE 中,您也可以调试 Python 和 Java 代码(我不知道这是否可以在同一个实例中完成,即两个调试会话是否可以存在于同一个 Eclipse 实例中,但是我不在乎,因为我为 Python、Java、Scala、Android 使用了不同的 Eclipse 实例……)

创建以下 Java 程序并导出一个可运行的 JAR,例如在 location /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 脚本,在 line 处添加一个断点print i并点击Debug as Python script。子进程输出应该被重定向到 Eclipse 控制台,并且您应该看到消息Listening for transport 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 实例中,创建一个远程调试配置:运行>调试配置,在左侧栏中选择远程 Java 应用程序,在右侧选择名称、主机localhost、传输socket端口8000。点击Apply,然后Debug。JavaSE 实例中的 Debug 透视图将打开,您将看到您的代码在System.out.println. 在右窗格中,您可以检查局部变量,例如i = 0. 点击Resume 10 次,PyDev 实例会闪烁,因为 Python 断点已被命中。

于 2012-09-19T13:14:16.800 回答
0

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

不是我所知道的(所以:Eclipse 调试上的 CBT 和 Java)。您可以尝试其他调试方法,例如使用log4j记录事件(针对您的 java 异常等),或者使用junitpyunit单元测试技术构建一个ant 脚本,并以良好的覆盖率为目标。

试试这个网站Testing Java with Jython and PyUnit,我想这就是你所追求的。

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

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

祝你好运!

于 2012-09-19T11:41:32.987 回答