我正在使用 Python 来调用我的许多 Java 程序。是否可以对 Python 和 Java 使用调试透视图并同时跟踪两种语言的进度?谢谢
2 回答
我下载了两个不同的 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 断点已被命中。
我正在使用 Python 来调用我的许多 Java 程序。是否可以对 Python 和 Java 使用调试透视图并同时跟踪两种语言的进度?谢谢
不是我所知道的(所以:Eclipse 调试上的 CBT 和 Java)。您可以尝试其他调试方法,例如使用log4j记录事件(针对您的 java 异常等),或者使用junit和pyunit单元测试技术构建一个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)
祝你好运!