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

step コマンド

step コマンドは、1 ソース行または 1 文をステップ実行します (-g オプションを使ってコンパイルされた呼び出しにステップインします)。

dbx 環境変数 step_events は、ステップ実行中にブレークポイントが使用可能であるかどうかを制御します。

dbx の環境変数 step_granularity は、ソース行のステップ実行のきめ細かさを制御します。

dbx の環境変数 step_abflow は、dbx が「異常」制御フロー変更が発生しそうになっていることを検出したときに停止するかどうかを制御します。このような制御フロー変更は、siglongjmp() または longjmp() の呼び出し、あるいは例外の送出が原因で発生することがあります。

ネイティブモードの構文

step

1 行をステップ実行します (呼び出しにステップイン)。関数呼び出しがステップオーバーされるマルチスレッドプログラムの場合、デッドロック状態を避けるため、その関数呼び出し中は全スレッドが暗黙的に再開されます。非活動状態のスレッドをステップ実行することはできません。

step n

n 行をステップ実行します (呼び出しにステップイン)。

step up

ステップアップし、現在の関数から出ます。

step ... -sig signal

ステップ実行中に指定のシグナルを引き渡します。シグナルに対するシグナルハンドラが存在する場合、そのシグナルハンドラが -g オプション付きでコンパイルされていると、そのシグナルにステップインします。

step ...thread_id

指定のスレッドをステップ実行します。step up には適用されません。

step ...lwp_id

指定の LWP をステップ実行します。関数をステップオーバーしたときに全 LWP を暗黙に再開しません。

step to [function]

現在のソースコード行から呼び出された function へのス テップインを試行します。function が指定されなかった場合、最後の関数へのステップインを試行し、step コマンドおよび step up コマンドによる長いシーケンスを防止できます。最後の関数の例としては、次のものがあります。

f()->s()-t()->last();

last(a() + b(c()->d()));

ここで

n は、ステップ実行対象の行数です。

signal はシグナル名です。

thread_id は、スレッド ID です。

lwp_id は、LWP ID です。

function は、関数名です。

明示的な lwp_id が指定されている場合のみ、step コマンドによる汎用のデッドロック回避策は無効となります。

最後のアセンブル呼び出し命令へのステップインや現在のソースコード行の関数 (指定されている場合) へのステップインが試行されている間に、step to コマンドを実行した場合、条件付き分岐があると呼び出しが受け付けられないことがあります。呼び出しが受け付けられない場合や現在のソースコード行に関数呼び出しがない場合、step to コマンドが現在のソースコード行をステップオーバーします。step to コマンドをを使用する際は、ユーザー定義演算子に特に注意してください。

マシンレベルの呼び出しステップ実行については、stepi コマンド」も参照してください。

Java モードの構文

step

1 行をステップ実行します (呼び出しにステップイン)。メソッド呼び出しがステップオーバーされるマルチスレッドプログラムの場合、デッドロック状態を避けるため、そのメソッド呼び出し中は全スレッドが暗黙的に再開されます。非活動状態のスレッドをステップ実行することはできません。

step n

n 行をステップ実行します (呼び出しにステップイン)。

step up

ステップアップし、現在のメソッドから出ます。

step ...thread_id

指定のスレッドをステップ実行します。step up には適用されません。

step ...lwp_id

指定の LWP をステップ実行します。メソッドをステップオーバーしたときに全 LWP を暗黙に再開しません。