前: Break Commands, 上: Breakpoints


5.1.8 ブレイクポイント・メニュー

プログラミング言語によっては (特にC++の場合)、 異なるコンテキストにおいて使用するために、 同一の関数名を複数回定義することが可能です。 これは、 オーバーローディングと呼ばれます。 関数名がオーバーロードされている場合、 `break function'だけでは、 どこにブレイクポイントを設定したいのかをGDBに正しく指定するのに十分ではありません。 このような場合には、 ブレイクポイントを設定したい関数がどれであるかを正確に指定するために、 `break function(types)'のような形式を使用することができます。 このような形式を使用しないと、 GDBは候補となりえるブレイクポイントの一覧を番号付きのメニューとして表示し、 プロンプト`>'によってユーザの選択を待ちます。 先頭の2つの選択肢は常に、 `[0] cancel'と`[1] all'です。 1を入力すると、 候補となるすべての関数のそれぞれの定義に対してブレイクポイントを設定します。 また、 0を入力すると、 新たにブレイクポイントを設定することなく breakコマンドを終了します。

例えば、 以下に示すセッションの抜粋は、 オーバーロードされたシンボルString::afterに対してブレイクポイントを設定しようとした場合を示しています。 ここでは、 この関数名を持つ関数定義の中から3つを選択しています。

     (gdb) b String::after
     [0] cancel
     [1] all
     [2] file:String.cc; line number:867
     [3] file:String.cc; line number:860
     [4] file:String.cc; line number:875
     [5] file:String.cc; line number:853
     [6] file:String.cc; line number:846
     [7] file:String.cc; line number:735
     > 2 4 6
     Breakpoint 1 at 0xb26c: file String.cc, line 867.
     Breakpoint 2 at 0xb344: file String.cc, line 875.
     Breakpoint 3 at 0xafcc: file String.cc, line 846.
     Multiple breakpoints were set.
     Use the "delete" command to delete unwanted
      breakpoints.
     (gdb)