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

プログラムをステップ実行する

ブレークポイントで停止したあと、プログラムを 1 ソース行ずつステップ 実行すれば、あるべき正しい状態と実際の状態とを比較できます。それには、step コマンドと next コマンドを使用します。いずれのコマンドもプログラムのソース行を 1 行実行し、その行の実行が終了すると停止します。この 2 つのコマンドは、関数呼び出しが含まれているソース行の取り扱い方が違います。step コマンドは関数にステップインし、next コマンドは関数をステップオーバーします。

step up コマンドは、現在実行している関数が、自身を呼び出した関数に制御を戻すまで実行され続けます。

step to コマンドは、現在のソース行で指定されている関数にステップするか、関数が指定されていない場合は、現在のソース行のアセンブリコードにより最後に呼び出される関数にステップします。

printf のようなライブラリ関数をはじめとする一部の関数は -g を使用してコンパイルされていないことがあります。dbx は、このような関数にはステップインできません。このような場合、stepnext は同じような動作を示します。

次は、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 コマンド」を参照してください。