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

ブレークポイントイベント仕様

ブレークポイントとは、アクションが発生する位置であり、その位置でプログラムは実行を停止します。次に、ブレークポイントイベントに対するイベント仕様を説明します。

in function

関数が入力され、最初の行が実行される直前。先行ログ後の最初の実行可能コードは、実際のブレークポイントの位置として使用されます。この行は、局所変数を初期化する行になることがあります。C++ のコンストラクターの場合、すべてのベースクラスのコンストラクターの実行後に実行されます。-instr 修飾子が使用される場合 (-instr参照) は、関数の最初の命令が実行される直前です。function 仕様は、仮パラメータを含むことができるため、多重定義関数名、またはテンプレートインスタンスの指定に役立ちます。次に例を示します。


 stop in mumble(int, float, struct Node *)

注 –

in function-in function 修飾子とを混同しないでください。


at [filename: ]line_number

指定の行が実行される直前。filename を指定した場合は、指定ファイルの指定の行が実行される直前。ファイル名には、ソースファイル名またはオブジェクトファイル名を指定します。引用符は不要ですが、ファイル名に特殊文字が含まれる場合は、必要な場合もあります。指定の行がテンプレートコードに含まれる場合、ブレークポイントは、そのテンプレートのすべてのインスタンス上に置かれます。

at address_expression

指定のアドレスの指示が実行される直前。このイベントは stopi コマンド (stopi コマンド」参照) または -instr イベント修飾子 (-instr参照) のみ利用可能です。

infile filename

このイベントにより、ファイルで定義されたすべての関数にブレークポイントが設定されます。stop infile コマンドは、funcs -f filename コマンドと同様に、同じ関数のリストを繰り返します。

.h ファイル内のメソッド定義、テンプレートファイル、または .h ファイル内のプレーン C コード (regexp コマンドで使用される種類など) は、ファイルの関数定義に寄与する場合がありますが、これらの定義は除外されます。

指定されたファイル名が、オブジェクトファイルの名前の場合 (その場合、名前は .o で終了する)、ブレークポイントは、そのオブジェクトファイルで発生する関数すべてに設定されます。

stop infile list.h コマンドは、list.h ファイルで定義されたメソッドのすべてのインスタンスにブレークポイントを設定することはしません。そうするためには、inclass または inmethod のようなイベントを使用します。

fix コマンドは、関数をファイルから削除する、または追加する場合があります。stop infile コマンドは、ファイル内の関数のすべての古いバージョンと、将来追加されるすべての関数にブレークポイントを設定します。

ネストされた関数や Fortran ファイルのサブルーチンには、ブレークポイントは設定されません。

clear コマンドを使用して、infile イベントによって作成された組にある単一のブレークポイントを無効にできます。

infunction function

in function と同じ働きを、function と名付けられたすべての多重定義関数、およびテンプレートインスタンスのすべてに対してします。

inmember function inmethod function

すべてのクラスに対して、in function または function と名付けられたメンバー関数と同じ働きをします。

inclass classname [-recurse | -norecurse]

in function と同じ働きを、classname のベースではなく、classname のメンバーであるすべてのメンバー関数に対してします。-norecurse はデフォルトです。-recurse が指定された場合、基底クラスが含まれます。

inobject object-expression [-recurse | -norecurse]

object-expression で示されるアドレスにある特定のオブジェクトに対して呼び出されたメンバー関数が呼び出されました。stop inobject ox はほぼ次のものと同じですが、inclass とは異なり、ox の動的タイプのベースが含まれます。-recurse はデフォルトです。-norecurse が指定された場合、基底クラスが含まれます。


stop inclass dynamic_type(ox) -if this==ox