1

私はJDI api (Java Debug Interface)を使用しており、特定のメソッドのコードの最初の行だけでなく、メソッドのすべての「終了ポイント」(つまり、すべての「リターン... ;")。

ブレークポイント リクエストを作成するには、Locationオブジェクト (つまり、実行可能コードへのポインターのようなもの)が必要です。

メソッドの最初の行の を取得するLocationのは比較的簡単です:

theTargetMethod.allLineLocations().get(0)

Locationすべての「出口点」を取得することは、より問題があります。returnメソッドの本文の途中に複数のステートメントが含まれている可能性があるため、メソッドの最後の行を取得するだけでは不十分であり、それらもキャッチする必要があります。

を使用することを検討しましたMethodExitRequestが、クラスの他のメソッドに関連しているため、必要のない大量のイベントが生成されます。(そのため、ジョブを実行できますが、実行時に大きなオーバーヘッドが発生します)。

Locationだから私の質問は:メソッドのすべての出口点を取得するにはどうすればよいですか?

編集

追加情報

私の特定のユース ケースでは、いくつかのメソッドに対してブレークポイント リクエストを作成する必要があります。関心のあるすべてのメソッドがすべてvoidを返すように見えるので、「return void」命令 (b1) をメソッドのバイトコードを取得し、バイトコード内の b1 のすべてのインデックスに基づいて Locations オブジェクトを作成します。

4

0 に答える 0