問題タブ [jdi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - メソッドエントリのデバッグを使用すると、デバッグされたプログラムの速度が大幅に低下するのはなぜですか?
jdiインターフェイスを使用してデバッガーを作成しています。MethodEntryRequestsを使用してメソッドエントリのトレースを有効にすると、デバッグされたプログラムの速度が数十倍遅くなります。メインスレッドのフィルターを設定し、ポリシーをSUSPEND_EVENT_THREADに一時停止しました。Classfilterには制限があり、受信したイベントを印刷しても、数十個しか表示されないため、あまり多くのイベントを受信しないようにする必要があります。私はローカルでデバッグしていて、デバッグされたJavaプログラムで次のようなコマンドラインを使用しています。
-Xdebug -Xrunjdwp:transport=dt_socket,suspend=y,server=y,address=1337
java - デバッグ インターフェイスの問題を伴う Java プラグインの開発
こんにちは、Java デバッグ インターフェイスを使用する Eclipse プラグイン (Eclipse 内) を開発しようとしていますが、次のエラーが発生します。
アクセス制限: 必要なライブラリ /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar の制限により、タイプ VirtualMachine にアクセスできません
プラグイン以外の開発プロジェクトでデバッグ インターフェイスを使用すると、問題なく動作するようです。プラグインの依存関係と関係があると思いますが、修正方法がわかりません。
java - Ant は 2 つの Java アプリケーションを同時に起動できますか?
私は現在、JDI を使用して既に実行中の「ターゲット」Java アプリケーションに接続する「デバッガー」Java アプリケーションを開発しています。最初のアプリケーションがまだ実行されている間に、Ant にターゲット アプリケーションを起動させ、その後「デバッガ」を起動させる方法はありますか?
はい、JDI アプリを開発してターゲット プログラムを起動できることはわかっていますが、それは今私が望んでいることではありません。
java - JDI スレッド評価で問題が発生しました
Java用のEclipseを実行しています。XML ファイルの DOM バージョンを作成しました。今、ファイル内の要素の属性を変更したいと考えています。DOMを制御するクラス内のメソッドを呼び出すメソッドを呼び出したところ、デバッグ中に「JDIスレッド評価で問題が発生しました。非同期スレッドキューを処理中に例外が発生しました」というダイアログボックスが表示されました。
私は Java の比較的初心者であり、そのようなエラーに遭遇したことはなく、何が原因なのかわかりません。
問題の原因および/またはそれを修正する方法について誰かが何か提案があれば...
本当にありがとう!
eclipse - デバッグ中に、デバッグ ターゲット VM でコードを評価する方法は?
Eclipse などでのデバッグ中に、ウォッチ式または条件付きブレークポイントを評価できます。通常、これらはクライアント側で評価されます。たとえば、Eclipse 内からデバッグする場合、これらの式を評価するのはデバッグ ターゲット VM ではなく、Eclipse 自体です。特に条件付きブレークポイントの場合、条件が false と評価された場合でも、ブレークポイントにヒットするたびにデバッグ VM (つまり Eclipse) がアクティブになる必要があるため、これは非常にコストがかかる可能性があります。
私の質問は、式/条件が実際にTRUEと評価された場合にのみターゲットVMがデバッグVMに通知するように、デバッグターゲットVMでそのような式または条件付きブレークポイントを代わりに評価することをデバッグプロトコルが許可するかどうかです。
java - ローカル変数名へのJavaアクセス
私は現在、プログラムの実行中にローカル変数の変数名にアクセスし、それらを外部に渡すプログラムを作成しています。デバッグモードでコンパイルしない限り、Javaはコンパイル中にローカル変数名をダンプすることを知っています。
いくつか見てみると、JDI/JPDAがこの種の仕事に行く方法のようです。ref
を参照すると仮定するとThreadReference
、これまでのところ、次のようになります。
2つの質問:
- 私は正しい方向に進んでいますか、それともこれを行うためのより良い方法がありますか?
ThreadReference
に設定するを取得するにはどうすればよいref
ですか?LocatableEventは私が必要としているもののようですが、誰かがそれを使用する方法の例を提供できますか?
よろしくお願いします!
java - Java Debugger Interface に異なるストラタムを実装する
Location クラスの Java Debugger Interface ドキュメントには、場所の「階層」について説明している段落があります。新しいストラタム (Scala や JRuby など) を実装する方法について詳しく調べてみましたが、あまり見つかりませんでした。誰でもこのトピックに光を当てることができますか?
java - JDIおよびJPDAのObjectReference基になるオブジェクト
具体的には、JDIとJPDAのコンテキストでは、次の質問があります。
ObjectReference
基になるオブジェクトを公開しないのはなぜですか?なんらかの仕様に基づいていますか?Eclipse Debug Projectなどのすべての実装は、基になるオブジェクトを公開しないものと同じですか?uniqueID()
fromがある状況を考慮して、JVMObjectReference
から基になるオブジェクトを解決する方法はありますか?前の質問に当てはまらない場合、基になるオブジェクトを解決するための最良の方法は何ですか?
Value
情報からのを取得する方法に精通していることを付け加えておきますが、フィールドの内部値や構造ではなく、オブジェクト参照StackFrame
が本当に必要です。
java - JDI/JPDA イベントのフィルタリング
JDIには、JPDAが使用するJVMで処理されたイベントからイベントを除外するAPIがあります。これは以下を使用して行われます。
addExclusionFilter(String)
いくつかのパターンを除外します。例えばaddExclusionFilter("java.*")
addClassFilter(String)
いくつかのパターンを含める。例えばaddClassFilter("java.util.*")
今、私は両方が必要です。からのすべてのイベントを除外する必要がありますが、からの"java.*"
イベントを受け取る必要があります"java.util.Iterator"
。
また、たとえばjava.util.Iterator
は、 のプライベート クラスによって実装されるインターフェイスであることに注意してくださいjava.util.AbstractList
。そのようなイベントをどのように受け取りますjava.util.Iterator
か?
両方の方法を使用すると、実際にはイベントを受信しなくなりました。それを行う方法はありますか?前もって感謝します。