Oracle Solaris Studio 12.2: dbx コマンドによるデバッグ

trace コマンド

trace コマンドは、実行したソース行、関数呼び出し、変数の変更を表示します。

トレース速度は dbx 環境変数 trace_speed によって設定します。

dbx が Java モードで、トレースのブレークポイントをネイティブコードで設定する場合は、joff コマンドを使用してネイティブモードに切り替えるか (joff コマンド」参照)、traceコマンドの前に native を追加します (native コマンド」参照)。

dbx が JNI モードで、トレースのブレークポイントを Java コードで設定する場合は、trace コマンドの前に java を追加します (java コマンド」参照)。

構文

trace コマンドの一般構文は、次のとおりです。

trace event_specification [modifier]

指定イベントが発生すると、トレースが出力されます。

ネイティブモードの構文

ネイティブモードでは、次の構文が有効です。

trace -file file_name

指定 file_name に全トレース出力を送ります。トレース出力を標準出力に戻すには、file_name の代わりに - を使用します。トレース出力は常に file_name に追加されます。トレース出力は、dbx がプロンプト表示するたび、またアプリケーションが終了するたびにフラッシュされます。dbx 接続後にプログラムの実行を再開するか新たに実行を開始すると、file_name が常に開きます。

trace step

各ソース行、関数呼び出し、および戻り値をトレースします。

trace next -in function

指定 function の中で各ソース行をトレースします。

trace at line_number

指定のソース line_number をトレースします。

trace in function

指定 function の呼び出しとこの関数からの戻り値をトレースします。

trace infile file_name

file_name 内のいずれかの関数の呼び出しとその関数からの戻り値をトレースします。

trace inmember function

function という名前のメンバー関数の呼び出しをトレースします。

trace infunction function

functionという名前の関数が呼び出されるとトレースします。

trace inclass class

class のメンバー関数の呼び出しをトレースします。

trace change variable

variable の変更をトレースします。

ここで

file_name は、トレース出力の送信先ファイルの名前です。

function は、関数の名前です。

line_number は、ソースコード行の番号です。

class は、クラスの名前です。

variable は、変数の名前です。

ネイティブモードでは、次の修飾子が有効です。

-if condition_expression

condition_expression が真の場合にだけ、指定したイベントが 発生します。

-in function

指定したイベントが関数で発生した場合にだけ、実行が停止します。

-count number

カウンタが 0 で開始され、イベントの発生ごとに増分されます。number に到達すると、実行が停止され、カウンタが 0 にリセットされます。

-count infinity

カウンタが 0 で開始され、イベントの発生ごとに増分されます。実行は停止されません。

-temp

イベントの発生時に削除される一時的なブレークポイントを作成します。

-disable

無効状態のブレークポイントを作成します。

-instr

命令レベルのバリエーションを実行します。たとえば、step は命令レベルのステップ実行になり、at では行番号ではなくテキストアドレスを引数として指定します。

-perm

このイベントをデバッグ中は常に有効にします。一部のイベント (ブレークポイントなど) は、常に有効にするのには適していません。 delete all は、常に有効なハンドラを削除しません。削除するには、delete hid を使用します。

-hidden

status コマンドからイベントを隠ぺいします。一部のインポートモジュールでこれが使用されることがあります。そのようなモジュールを表示するには、status -h を使用します。

-lwp lwpid

指定した LWP で指定したイベントが発生した場合にだけ、実行が停止します。

-thread thread_id

指定したスレッドで指定したイベントが発生した場合にだけ、実行が停止します。

Java モードの構文

Java モードでは、次の構文が有効です。

trace -file file_name

指定 file_name に全トレース出力を送ります。トレース出力を標準出力に戻すには、file_name の代わりに - を使用します。トレース出力は常に file_name に追加されます。トレース出力は、dbx がプロンプト表示するたび、またアプリケーションが終了するたびにフラッシュされます。file_name は、接続後の新規実行時や再開時に必ずオープンし直されます。

trace at line_number

line_number をトレースします。

trace at file_name.line_number

指定したソース file_name.line_number をトレースします。

trace in class_name.method_name

次の呼び出しと、戻り値をトレースします。class_name. method_name

trace in class_name.method_name([parameters])

class_name.method_name([parameters]) の呼び出しと、このメソッドからの戻り値をトレースします。

trace inmethod class_name.method_name

class_name.method_name という名前のメソッドの呼び出しと、このメソッドからの戻り値をトレースします。

trace inmethod class_name.method_name[(parameters)]

class_name.method_name [(parameters)] と言う名前のメソッドの呼び出しと、このメソッドからの戻り値をトレースします。

ここで

class_name は、Java クラス名で、パッケージのパス (. (ピリオド) を修飾子として使用。たとえば test1.extra.T1.Inner) またはフルパス名 (# 記号で始まり、/ (スラッシュ) や $ 記号を修飾子として使用。たとえば #test1/extra/T1$Inner) のいずれかで指定します。修飾子 $ を使用する場合は、class_name を引用符で囲みます。

file_name は、ファイルの名前です。

line_number は、ソースコード行の番号です。

method_name は、Java メソッドの名前です。

parameters は、メソッドのパラメータです。

Java モードでは、次の修飾子が有効です。

-if condition_expression

condition_expression が真の場合にだけ、指定したイベントが発生し、トレースが出力されます。

-count number

カウンタが 0 で開始され、イベントの発生ごとに増分されます。number に到達すると、トレースが出力され、カウンタが 0 にリセットされます。

-count infinity

カウンタが 0 で開始され、イベントの発生ごとに増分されます。実行は停止されません。

-temp

イベントが発生してトレースが出力されるときに削除される、一時的なブレークポイントを作成します。-temp -count とともに使用した場合は、カウンタが 0 にリセットされたときだけブレークポイントが削除されます。

-disable

無効状態のブレークポイントを作成します。

全イベントのリストと構文については、「イベント指定の設定」を参照してください。