我使用Python来调用我的许多Java程序。是否可以对Python和Java使用调试透视图并同时跟踪两种语言的进度?感谢
答案 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 script和junit单元测试技术构建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)