Sun Studio 12: 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
実行中: 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 コマンド」を参照してください。