2

私は Python を使用して多くの Java プログラムを呼び出しています。Python と Java の両方でデバッグ パースペクティブを使用して、両方の言語で同時に進行状況を追跡することはできますか? ありがとう

4

2 に答える 2

3

JavaSE用とPyDev用の2つの異なるEclipseをダウンロードしました。Python スクリプトがリモート デバッグ モードで JVM を起動すると、他の Eclipse インスタンスがリモート デバッグを介してこの JVM に接続します。このようにして、2 つの異なる IDE であっても、Python コードと Java コードの両方をデバッグできます (これが同じインスタンスで実行できるかどうか、つまり、2 つのデバッグ セッションが同じ 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 iDebug 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 インスタンスのデバッグ パースペクティブが開き、コードが で中断されていることがわかります。右側のペインで、ローカル変数を調べることができます。Resumeを 10 回押すと、Python ブレークポイントにヒットしたため、PyDev インスタンスが点滅します。System.out.printlni = 0

于 2012-09-19T13:14:16.800 に答える
0

私は Python を使用して多くの Java プログラムを呼び出しています。Python と Java の両方でデバッグ パースペクティブを使用して、両方の言語で同時に進行状況をトレースすることはできますか? ありがとう

私が知っていることではありません(SO:CBT and Java on Eclipse Debug)。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)

幸運を!

于 2012-09-19T11:41:32.987 に答える