-XX:HitachiCallToString(ローカル変数情報出力オプション)
形式
-XX:HitachiCallToString=<適用範囲>
説明
<適用範囲>に該当するクラスのローカル変数オブジェクト対して取得したStringオブジェクトの文字列を,変数値を表現する文字列として出力します。
なお,ローカル変数に格納されているオブジェクトがない場合,またはJavaVM内部のオブジェクトの場合は,出力されません。
- デフォルト値
-
-
-XX:HitachiCallToString=minimal
-
- 前提オプション
-
-
-XX:+HitachiLocalsInThrowable
-
引数
- <適用範囲>
-
minimalまたはfullを指定します。
- minimal:
-
java.langパッケージ内の次に示すクラスが対象になります。
-
String
-
StringBuffer
-
Boolean
-
Byte
-
Character
-
Short
-
Integer
-
Long
-
Float
-
Double
なお,空文字("")を指定した場合も,minimalと同じです。
-
- full:
-
すべてのクラスおよび配列型が対象になります。
出力例
Javaプログラム例3を使用した出力例(簡易出力フォーマット)を,次に示します。
-XX:HitachiCallToString=minimalの場合
at Example3.method(Example3.java:18) locals: (Example3) this = <0xaa07db58> (java.lang.String) l1 = <0xae173a28> "local 1" (java.lang.StringBuffer) l2 = <0xaa07dca0> "local 1 + local 2" (java.lang.Boolean) l3 = <0xaa07de18> "false" (java.lang.Character) l4 = <0xaa07df68> "X" (java.lang.Long) l5 = <0xaa07e078> "-9223372036854775808" (java.lang.Object) l6 = <0xaa07e1a8> (java.lang.Object[]) l7 = <0xaa07e298> at Example3.main(Example3.java:4) locals: …
-XX:HitachiCallToString=fullの場合
at Example3.method(Example3.java:18) locals: (Example3) this = <0xaa07db58> "I am an Example3 instance." (java.lang.String) l1 = <0xae173a28> "local 1" (java.lang.StringBuffer) l2 = <0xaa07dca0> "local 1 + local 2" (java.lang.Boolean) l3 = <0xaa07de18> "false" (java.lang.Character) l4 = <0xaa07df68> "X" (java.lang.Long) l5 = <0xaa07e078> "-9223372036854775808" (java.lang.Object) l6 = <0xaa07e1a8> "Thread[Thread-0,5,main]" (java.lang.Object[]) l7 = <0xaa07e298> "[Ljava.lang.Thread;@26e431" at Example3.main(Example3.java:4) locals: …
注意事項
-
ローカル変数情報を完全に収集するためには,javacでclassファイルを生成する際に,-gオプションまたは-g:varsオプションを付加してclassファイル内にローカル変数情報を埋め込んでおく必要があります。-gオプションまたは-g:varsオプションを付加しないで作成されたclassファイルについては,収集可能な範囲でローカル変数情報が出力されます。
-
このオプションを指定して,AWTまたはSwingを利用したJavaのプログラムを実行する場合,<適用範囲>には「minimal」(デフォルト)を指定してください。<適用範囲>に「full」を指定すると,プログラムが正しく動作しません。
-
ユーザプログラムでの例外発生時の原因調査時に限り,<適用範囲>に「full」を指定してください。この機能は,例外オブジェクト生成時,ローカル変数オブジェクトのtoString()メソッドを呼び出す仕様です。toString()メソッドの呼び出しにより,原因調査に有用な情報が得られる反面,本来とは異なるタイミングでtoString()メソッドを呼び出すことで,製品やユーザプログラムが正しく動作しない場合があるためです。