Hitachi

 Hitachi Application Server V10 定義リファレンスWindows®用)


7.10.3 -XX:[+|-]HitachiLocalsInThrowable

スタックトレース中のメソッドのローカル変数情報を出力します。

説明

java.lang.Throwable.fillInStackTraceメソッド実行時に、スタックトレース中のメソッドのローカル変数情報を収集します。

出力形式
    locals:
      name: name
      type: type
      value: value
...
  • 1行目に「locals:」という見出しが出力されます。

  • 2行目以降は、収集できた各ローカル変数の情報が1行ずつ出力されます。

出力されるローカル変数の情報を次に示します。

  1. 変数名

  2. 型名(基本型名、クラス名または配列型名)

  3. 変数値を表現する文字列

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

出力項目

出力内容

name

ローカル変数名。

メソッドに渡される引数の場合は、変数名に続いて[arg***]***は引数番号)が表示されます。

type

ローカル変数の型名(基本型名、クラス名または配列型名)。

value

ローカル変数の値を表現する文字列。

  • 基本型

    値をそのまま文字列化したもの

  • クラスまたは配列型

    変数値がnullの場合:(null)

    それ以外の場合:オブジェクトの存在するアドレス

値表現の最大文字列長は64文字です。これを超える場合は64文字目までを出力したあと、「...」という文字列が出力されます。クラスまたは配列型の場合、次の追加オプションを指定することでより詳細な表現が追加できます。

  • -XX:+HitachiLocalsSimpleFormat

  • -XX:+HitachiTrueTypeInLocals

  • -XX:HitachiCallToString

書式

-XX:[+|-]HitachiLocalsInThrowable

指定できる値

型:String

-XX:+HitachiLocalsInThrowable

スタックトレース中のメソッドのローカル変数情報を出力します。

ただし、java.lang.StackOverflowError発生時には、このオプションは無視されます。

-XX:-HitachiLocalsInThrowable

スタックトレース中のメソッドのローカル変数情報を出力しません。

デフォルト値

定義項目の省略

-XX:-HitachiLocalsInThrowable

出力例

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

Javaプログラム例
class Example1 {
    public static void main(String[] args) {
        Example1 e1 = new Example1();
        Object obj = new Object();
        e1.method(1, 'Q', obj);  // 5行目
    }
 
    void method(int l1, char l2, Object l3) {
        float l4 = 4.0f;
        boolean l5 = true;
        double l6 = Double.MAX_VALUE; // double型の最大値
        Object[] l7 = new Object[10];
 
        try {
          <例外発生!>  // 15行目
        } catch (Exception e) {
          e.printStackTrace();
        }
    }
}
出力例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
 
      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:
...
出力例2

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

  • -gオプションまたは-g:varsオプションを付加しないでclassファイルを生成した場合

  • -gオプションまたは-g:varsオプションを付加して生成したclassファイルの、nativeメソッドの場合

      at Example1.method(Example1.java:15)
        locals:
          name: this
          type: Example1
          value: <0x922f42d0>
     
          name: [arg1]
          type: int
          value: 1
     
          name: [arg2]
          type; char
          value: 'Q'
     
          name: [arg3]
          type: java.lang.Object
          value: <0xaf112f08>
     
      at Example1.main(Example1.java:5)
        locals:
    ...

注意事項