3.1 デバッグコード(adviceコード)内の特殊変数

挿入コード内で使用することのできる特殊文字列

デバッグコード内では以下の特殊文字列を使うことができる。

特殊文字列
説明 since



thisJoinPoint  -- String型

デバッグコード挿入位置の情報(ソースコードの行番号など)を表す。
1.0.0
thisJoinPoint.location  -- String型

デバッグコード挿入位置のソースコードの位置情報を表す。
1.0.0
thisJoinPoint.line  -- int型

デバッグコード挿入位置の行番号を表す。
1.0.0
thisJoinPoint.file  --String型

デバッグコード挿入位置が存在するソースコードのファイル名を表す。 1.0.0
thisJoinPoint.filePath  --String型

デバッグコード挿入位置が存在するソースコードのファイルパスを表す。 1.4.8
thisJoinPoint.kind  --String型

デバッグコード挿入位置の種類を表す。 1.0.0
thisJoinPoint.field

fieldSet,fieldGetの場合フィールドの値を表す。その他はnullを表す。
1.0.0
thisJoinPoint.target

methodCall、fieldSet、fieldGetの場合ターゲットとなるオブジェクトを表す。その他はnullを表す。
1.0.0
thisJoinPoint.within  -- String型

現在実行されているクラスの名前
1.4.4
thisJoinPoint.withincode  -- String型

現在実行されているメソッドの名前
1.4.4
thisJoinPoint.variables  --java.lang.Object[][]型
詳細

デバッグコード挿入位置に存在する全てのローカル変数、クラス変数のマップ
Object[index][0]は変数の名前 (String型)、Object[index][1]は変数の値
1.4.4
thisJoinPoint.weavehost  -- String[]型

weaveを実行したhostのIPアドレスの一覧
1.5.0

   


挿入コード内で使用することのできる特殊文字

また、Bugdelではバイトコード編集ライブラリjavassistで 提供されている特殊文字を使うことができる。以下に一部を載せる。詳しくはjavassistのチュー トリアル

pointcut
特殊文字
説明
fieldSet
$0
アクセスした変数を含んでいるオブジェクトを表す。ただしstatic 変数の場合はnullを表す。
$1
アクセスした変数に代入する値を表す。
fieldGet
$0
アクセスした変数を含んでいるオブジェクトを表す。ただしstatic 変数の場合はnullを表す。
$_
アクセスした変数の値を表す。
methodCall
$0
呼び出したメソッドのターゲットとなるオブジェクトを表す。ただし staticメソッドの場合はnullを表す。
$1,$2,$3,...
メソッドの引数を表す。
constructorCall
$_
生成したオブジェクトを表す。
$1,$2,$3,... コンストラクタの引数を表す。
instanceof
$1
instanceof演算子の左側のオブジェクトを表す。
$r
instanceof演算子の右側のクラスの型を表す。
$_
演算の結果(boolean)を表す。
cast
$1
キャストするオブジェクトを表す。
$r
キャストするクラスの型を表す。
handler
$1
catch文でキャッチする例外オブジェクトを表す。
methodExecution
$1,$2,$3,... メソッドの引数を表す。
constructorExecution
$1,$2,$3,... コンストラクタの引数を表す。