異なるクラスのメンバー関数の呼び出し、特定のクラスのすべてのメンバー関数の呼び出し、または多重定義されたトップレベル関数の呼び出しに関連する問題が発生する可能性があります。このような場合に対処するために、inmember、inclass、infunction または inobject のキーワードのうちの 1 つを stop, when,または trace コマンドとともに使用することにより、1 回のコマンドで C++ コードに複数のブレークポイントを挿入できます。
特定のメンバー関数のオブジェクト固有のもの (同じメンバー関数名でクラスの異なるもの) それぞれにブレークポイントを設定するには、stop inmember を使用します。
when ブレークポイントを設定するには、when コマンドをキーワード inmember とともに使用します。
たとえば、関数 draw が複数の異なるクラスに定義されている場合は、それぞれの関数ごとにブレークポイントを設定します。
(dbx) stop inmember draw
特定のクラスのすべてのメンバー関数にブレークポイントを設定するには、stop inclass コマンドを使用します。
when タイプのブレークポイントを設定する場合は、when コマンドをキーワード inclass とともに使用します。
クラス wedge のすべてのメンバー関数にブレークポイントを設定するには、次のように入力します。
(dbx) stop inclass wedge
ブレークポイントは、該当するクラスで定義されているクラスメンバー関数にだけ挿入されます。基底クラスから継承された関数には挿入されません。
stop inclass やほかのブレークポイントの選択によって挿入される多数のブレークポイントがあるため、必ず dbxenv step_events を on に設定して、step と next の速度を上げる必要があります。
多重定義された名前を持つ非メンバー関数 (同じ名前を持ち、引数の型または数の異なるもの) に複数のブレークポイントを設定するには、stop infunction コマンドを使用します。
when タイプのブレークポイントを設定する場合は、when コマンドをキーワード infunction とともに使用します。
たとえば、C++ プログラムで sort() という名前の関数が 2 種類定義されていて、一方が int 型の引数、もう一方が float 型の引数をとる場合に、両方の関数にブレークポイントを置くためには、次のように入力します。
(dbx) when infunction sort {cmd;}
In Object ブレークポイントを設定して、特定オブジェクトに適用される演算を確認します。In Object ブレークポイントは、オブジェクトから呼び出されると、そのオブジェクトクラスのすべての非静的メンバー関数によるプログラムの実行を中断します。
オブジェクトにブレークポイントを設定するには、stop inobject コマンドを使用します。
(dbx) stop inobject foo