ブレークポイントで停止したあと、プログラムを 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 Running: a.out stopped in main at line 13 in file "t.c" 13 printit(msg); (dbx) next Hello world stopped in main at line 14 in file "t.c" 14 } (dbx) run Running: a.out stopped in main at line 13 in file "t.c" 13 printit(msg); (dbx) step stopped in printit at line 6 in file "t.c" 6 printf("%s\n", msg); (dbx) step up Hello world printit returns stopped in main at line 13 in file "t.c" 13 printit(msg); (dbx) |
プログラムのステップ実行の詳細については、「プログラムのステップ実行」を参照してください。step および next コマンドの詳細については、「step コマンド」および 「next コマンド」を参照してください。