-XX:[+|-]HitachiLocalsInThrowable(例外発生時のローカル変数情報収集オプション)

形式

-XX:+HitachiLocalsInThrowable
スタックトレース中のメソッドのローカル変数情報を出力します。
ただし,java.lang.StackOverflowError発生時には,このオプションは無視されます。
-XX:-HitachiLocalsInThrowable
スタックトレース中のメソッドのローカル変数情報を出力しません。

説明

java.lang.Throwable.fillInStackTraceメソッド実行時に,スタックトレース中のメソッドのローカル変数情報を収集します。また,java.lang.Throwable.printStackTraceメソッドを使用した場合,従来のスタックトレース情報にローカル変数情報を追加して出力します。

デフォルト値
  • -XX:-HitachiLocalsInThrowable

出力形式

   locals:
     name: <name>
     type: <type>
     value: <value>

出力内容を次に示します。

なお,各ローカル変数の出力内容は,空行で区切られています。

<name>:
ローカル変数名。
メソッドに渡される引数の場合は,変数名に続いて[arg***](***は引数番号)が表示されます。
<type>:
ローカル変数の型名(基本型名,クラス名または配列型名)。
<value>:
ローカル変数の値を表現する文字列。
  • 基本型:
    値をそのまま文字列化したもの
  • クラスまたは配列型:
    変数値がnullの場合:(null)
    それ以外の場合:<オブジェクトの存在するアドレス>
値表現の最大文字列長は64です。これを超える場合は64文字目までを出力した後,「...」という文字列が出力されます。クラスまたは配列型の場合,次の追加オプションを指定することでより詳細な表現が追加できます。
  • -XX:+HitachiLocalsSimpleFormat
  • -XX:+HitachiTrueTypeInLocals
  • -XX:HitachiCallToString

出力例

Javaプログラム例1を使用した出力例を,次に示します。

すべてのローカル変数情報が出力される場合

 at Example1.method(Example1.java:15)
   locals:
     name: this
     type: Example1
     value: <0x922f42d0>
 
     name: l1 [arg1]
     type: int
     value: 1
 
     name: l2 [arg2]
     type; char
     value: 'Q'
 
     name: l3 [arg3]
     type: java.lang.Object
     value: <0xaf112f08>
 
     name: l4
     type: float
     value: 4.000000
 
     name: l5
     type: boolean
     value: true
 
     name: l6
     type: double
     value: 1.79769E+308
 
     name: l7
     type: java.lang.Object[]
     value: <0x922f42d8>
 
 at Example1.main(Example1.java:5)
   locals:

ローカル変数情報が存在しない場合

注意事項