2012-09-19 25 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的断点被击中。