0

異なるスレッドを実行するスケジューラであるアプリケーションがあります。アプリケーションは、新しい Runnable クラスをロードして実行できます。現在、アプリケーションは運用中です。つまり、リモート サーバーで実行されています。

私のチームは、Runnable クラスを開発する 3 人で構成されています。クラスの準備が整うと、サーバーにアップロードされ、スケジューラーにロードされます。

チームが特定のスレッドをデバッグできるようにしたいと考えています。つまり、人物 A は Runnable A、BB などのスレッドをデバッグできます。

リモート JVM へのフル アクセスを開発者に与えることは解決策ではありません。

だから私の質問は、スレッド固有の接続で複数のリモートデバッグを許可する方法ですか?

推奨 IDE: Eclipse

編集:

jdb http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.htmlを使用して、特定のスレッドにリモートで接続することが可能です。

以下に例を示します: http://www.itec.uni-klu.ac.at/~harald/CSE/Content/debugging.html
1) jdb スレッドでスレッドを検索します
2) ブレークポイントを設定し、必要なスレッドを入力します

それでもセキュリティの問題は残ります。1 つの解決策は、保護されたコードをデバッグ シンボルなしでコンパイルすることでしたが、これはコアのみを保護し、互いのスレッドを表示できるようにします。
それでは、次のステップ - Security Manager を掘り下げます。私の状況に適した特権層があるかもしれません。

4

1 に答える 1

0

あなたの質問に対する適切な答えが得られたかどうかはわかりませんが、それがどのように展開するか見てみましょう。

私が理解しているように、さまざまな開発者がクラスを単独でデバッグできるようにする必要があり、そのクラスは単一の Java プロセスの一部としてスレッドとして実行されます。

一見すると、この種の実行は、通常、プロセス内のすべてにアクセスできるという点で、デバッグの性質に反しています。この点で Java が他のどの言語とも違うとは思いません (私は Java プログラマーではありません)。

では、別の Java プロセスでクラスを実行するのはどうでしょうか。そうすれば、標準の Eclipse ツールを使用して、各開発者がクラスをリモート接続してデバッグできると思います。

ただし、これらのクラスは何らかの方法で相互にやり取りする必要があると思います。そうしないと、そもそも質問をすることはありません。また、各クラスを個別のプロセス (JVM) で実行することは、相互作用に関する限り悪いことのように思えます。

では、各クラス間のプロセス境界がそれほど重要ではない別の形式の相互作用についてはどうでしょうか? 私が知る限り、2 つのスレッドが同じプロセスにあるかどうかはあまり気にしないJCSPの使用を検討できます。

これは、同期メッセージ パッシングのみに基づく、まったく異なる対話モデルです。スケーラビリティは突然大きな問題ではなくなり、通常はマルチスレッド プログラムに関連する多くの落とし穴 (デッドロックなど) をかわすことができます。ただし、既に大量のコードを記述している場合、JCSP を採用することはおそらく大幅な書き直しになります。

マークの近くですか?幸運を。

于 2013-07-10T05:53:49.327 に答える