ブレークポイントで停止したあと、プログラムを 1 ソース行ずつステップ 実行すれば、あるべき正しい状態と実際の状態とを比較できます。 それには、step コマンドと next コマンドを使用します。いずれのコマンドもプログラムのソース行を 1 行実行し、その行の実行が終了すると停止します。この 2 つのコマンドは、関数呼び出しが含まれているソース行の取り扱い方が違います。step コマンドは関数にステップインし、next コマンドは関数をステップオーバーします。
step up コマンドは、現在実行している関数が、自身を呼び出した関数に制御を戻すまで実行され続けます。
step to コマンドは、現在のソース行で指定されている関数にステップするか、関数が指定されていない場合は、現在のソース行のアセンブリコードにより最後に呼び出される関数にステップします。
printf のようなライブラリ関数をはじめとする一部の関数は -g を使ってコンパイルされていないことがあります。dbx は、このような関数にはステップインできません。このような場合、step と next は同じような動作を示します。
次は、step コマンドと next コマンド、および 「ブレークポイントを設定する」に設定されたブレークポイントの使用例です。
(dbx) stop at 13 (3) stop at "t.c":13 (dbx) run 実行中: a.out main で停止しました 行番号 13 ファイル "t.c" 13 printit(msg); (dbx) next Hello world main で停止しました 行番号 14 ファイル "t.c" 14 } (dbx) run 実行中: a.out main で停止しました 行番号 13 ファイル "t.c" 13 printit(msg); (dbx) step printit で停止しました 行番号 6 ファイル "t.c" 6 printf("%s\n", msg); (dbx) step up Hello world printit 戻り値 134524 main で停止しました 行番号 13 ファイル "t.c" 13 printit(msg); (dbx) |
プログラムのステップ実行の詳細については、「プログラムのステップ実行」を参照してください。step および next コマンドの詳細については、「step コマンド」および 「next コマンド」を参照してください。