6

実行中の任意の時点で JVM を一時停止する可能性のある JDI API を探しています。BreakPointRequest createBreakpointRequest メソッドを見ると、特定の場所が必要です。ブレークポイントを作成するために渡すことができる現在の場所を取得するために、場所を必要としない、または何らかの形で他の API はありますか。

私は基本的に、アプリケーションをアタッチして一時停止し、JVMTI エージェントを使用して BreakPoint イベントのコールバックを受け取り、さらに処理を実行する方法を探しています。ありがとう

4

3 に答える 3

4

ブレークポイントは、ソース内の場所でのみ意味があります。アプリケーションを任意に一時停止するには、JVM で現在実行中のすべてのスレッドを一時停止するのが最善の方法です。SuspendThreadList()またはjvmtiを見てSuspendThreadください。このメカニズムは、探している「一時停止」になります。

于 2012-01-17T17:53:04.223 に答える
1

JDI で実行中の jvm を任意に一時停止したい場合は、JDI VirtualMachine インターフェイスのsuspendメソッドを使用します。

ただし、これは jvmti エージェントに接続できるという点ではあまり役に立ちません。他の回答が指摘しているように、jvmti には同じことを行うための独自のメソッドがあります。

特定のエージェントを呼び出すのではなく、ブレークポイントの任意のコールバックを定義する方法を探している場合は、jdiscriptに興味があるかもしれません. C++ にドロップする必要はありません。

于 2014-03-20T16:53:02.660 に答える
0

jdb - The Java Debuggerは最良の選択肢になると思います。についてのURLを確認してくださいjdb

http://docs.oracle.com/javase/1.3/docs/tooldocs/solaris/jdb.html

于 2012-01-17T17:21:47.670 に答える