ブレークポイントの構文

次の構文要素は、デバッガー コマンド ウィンドウまたは WinDbg グラフィカル インターフェイスを使用して、ブレークポイントを作成するときに使用できます。

ブレークポイント内のアドレス

ブレークポイントでは、仮想アドレス、関数オフセット、ソース行番号など、さまざまな種類のアドレス構文がサポートされています。 たとえば、次のいずれかのコマンドを使用してブレークポイントを設定できます。

0:000> bp 0040108c
0:000> bp main+5c
0:000> bp `source.c:31`

この構文の詳細については、「数値式の構文」、「ソース行の構文」、および個々のコマンド トピックを参照してください。

メソッドのブレークポイント

MyClass クラスの MyMethod メソッドにブレークポイントを設定するには、以下の 2 つの異なる構文を使用できます。

  • MASM 式の構文では、メソッドを二重コロンまたは二重アンダースコアで指定できます。

    0:000> bp MyClass::MyMethod 
    0:000> bp MyClass__MyMethod 
    
  • C++ 式の構文では、メソッドを二重コロンで指定する必要があります。

    0:000> bp @@( MyClass::MyMethod ) 
    

より複雑なブレークポイント コマンドを使用する場合は、MASM 式の構文を使用する必要があります。 式構文の詳細については、「式の評価」を参照してください。

複雑な MASM 式を使用したブレークポイント

スペースを含む関数や C++ パブリック クラスのメンバーなど、複雑な関数にブレークポイントを設定するには、式をかっこで囲みます。 たとえば、bp (??MyPublic) または bp (operator new) を使用します。

より汎用性の高い手法は、@!"chars" 構文を使用する方法です。 これは MASM エバリュエーターの特殊なエスケープであり、シンボル解決用に任意のテキストを提供できます。 3 つの記号 @!" で始まり、引用符 (") で終わる必要があります。 この構文がないと、MASM エバリュエーターのシンボル名にスペース、角かっこ (<、>)、またはその他の特殊文字を使用することはできません。 この構文は名前専用であり、パラメーターではありません。 テンプレートとオーバーロードは、この引用符表記を必要とするシンボルの主要なソースです。 以下のコードの例が示すように、@!"chars" 構文を使用して、bu コマンド設定できます。

0:000> bu @!"ExecutableName!std::pair<unsigned int,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > >::operator="

この例では、ExecutableName は実行可能ファイルの名前です。

このエスケープ構文は、C 関数名にスペース (または特殊文字) がないため、C の代わりに C++ (オーバーロードされた演算子など) に役立ちます。 ただし、この構文は、.NET Framework でオーバーロードを大幅に使用するため、多くのマネージド コードでも重要です。

C++ 構文で任意のテキストにブレークポイントを設定するには、C++ 互換シンボルに bu @@c++(text) を使用します。

スクリプト内のブレークポイント

ブレークポイント ID を明示的に参照する必要はありません。 代わりに、ブレークポイント ID に対応する整数に解決される数値式を使用できます。 式をブレークポイントとして解釈する必要があることを示すには、次の構文を使用します。

b?[Expression]

この構文では、角かっこが必要です。Expression は、ブレークポイント ID に対応する整数に解決される任意の数値式を表します。

この構文により、デバッガー スクリプトはプログラムでブレークポイントを選択できます。 次の例では、ブレークポイントはユーザー定義の擬似レジスタの値に応じて変化します。

b?[@$t0]

ブレークポイント擬似レジスタ

式でブレークポイント アドレスを参照する場合は、疑似レジスタ$bpNumber 構文で使用できます。ここで Number はブレークポイント ID です。 この構文の詳細については、「擬似レジスタ構文」を参照してください。

あいまいなブレークポイントの解決

デバッガー エンジンのバージョン 10.0.25310.1001 以降では、あいまいなブレークポイント解決がサポートされるようになりました。 あいまいなブレークポイントにより、ブレークポイント式が複数の場所に解決される特定のシナリオで、デバッガーがブレークポイントを設定できます。 詳細については、「あいまいなブレークポイントの解決」を参照してください。

関連項目

ブレークポイントの使用

ブレークポイントの構文

bp、bu、bm (ブレークポイントの設定)

未解決のブレークポイント (bu ブレークポイント)