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

ブレークポイントを設定する

ブレークポイントとは、一時的にプログラムの実行を停止し、コントロールを dbx に渡す場所のことです。バグが存在するのではないかと思われるプログラム領域にブレークポイントを設定します。プログラムがクラッシュした場合、クラッシュが発生した個所をつきとめ、その部分の直前のコードにブレークポイントを設定します。

プログラムがブレークポイントで停止したとき、プログラムの状態と変数の値を調べることができます。dbx では、さまざまな種類のブレークポイントを設定できます (「Ctrl+C によってプロセスを停止する」を参照)。

もっとも単純なブレークポイントは、停止ブレークポイントです。停止ブレークポイントを使用すれば、関数や手続きの中で停止させることができます。たとえば、main 関数が呼び出されたときに停止させる方法は次のとおりです。


(dbx) stop in main
(2) stop in main

stop in コマンドの詳細については、「関数に stop ブレークポイントを設定する」および stop コマンド」を参照してください。

また、特定のソースコード行で停止するようにブレークポイントを設定することもできます。たとえば、ソースファイル t.c の 13 行目で停止させる方法は次のとおりです。


(dbx) stop at t.c:13
(3) stop at “t.c”:13

stop at コマンドの詳細については、「ソースコードの特定の行に stop ブレークポイントを設定する」および stop コマンド」を参照してください。

停止場所を確認するには、file コマンドで現在のファイルを設定し、list コマンドで停止場所とする関数を表示させます。次に、stop at コマンドを使用してソース行にブレークポイントを設定します。


(dbx) file t.c
(dbx) list main
10    main(int argc, char *argv[])
11    {
12        char *msg = "hello world\n";
13        printit(msg);
14    }
(dbx) stop at 13
(4) stop at “t.c”:13

ブレークポイントで停止したプログラムの実行を続行するには、cont コマンドを使用します (「プログラムを継続する」および cont コマンド」を参照)。

現在のブレークポイントのリストを表示するには、status コマンドを使用します。


(dbx) status
(2) stop in main
(3) stop at "t.c":13

ここでプログラムを実行すれば、最初のブレークポイントでプログラムが停止します。


(dbx) run
...
stopped in main at line 12 in file "t.c"
12        char *msg = "hello world\n";