次の方法で共有


Visual Studio デバッガーのコンテキスト演算子 (C++)

C++ のコンテキスト演算子を使用して、ブレークポイントの場所、変数名、または式を修飾できます。 コンテキスト演算子は、ローカル名で非表示になっている外部スコープの名前を指定する場合に便利です。

構文

コンテキストを指定するには、次の 2 つの方法があります。

  1. {,,[module] } 表現

    中かっこには、2 つのコンマとモジュール (実行可能ファイルまたは DLL) 名または完全パスを含める必要があります。

    たとえば、SomeFunctionEXAMPLE.dll関数にブレークポイントを設定するには、次のようにします。

    {,,EXAMPLE.dll}SomeFunction
    
  2. module!表現

    EXAMPLE.dll!SomeFunction
    
  • module はモジュールの名前です。 完全なパスを使用して、同じ名前のモジュール間であいまいさを解消できます。

    モジュール パスにコンマ、埋め込みスペース、または中かっこが含まれている場合は、コンテキスト パーサーが文字列を正しく認識できるように、パスの周りに引用符を使用する必要があります。 単一引用符は Windows ファイル名の一部と見なされるため、二重引用符を使用する必要があります。 たとえば、

    {,,"a long, long, library name.dll"} g_Var
    
  • expression は、 モジュール内の関数名、変数名、ポインター アドレスなど、有効なターゲットに解決される任意の有効な C++ 式です。

    式エバリュエーターは、式でシンボルを検出すると、次の順序でシンボルを検索します。

  1. 現在のブロックから始まるレキシカルスコープは、一連のステートメントを中かっこで囲み、さらに外側にあるブロックへと続いていきます。 現在のブロックは、現在の場所である命令ポインター アドレスを含むコードです。

  2. 関数スコープ。 現在の関数。

  3. 現在の場所が C++ メンバー関数内にある場合のクラス スコープ。 クラス スコープには、すべての基底クラスが含まれます。 式エバリュエーターは、通常の支配ルールを使用します。

  4. 現在のモジュールのグローバル シンボル。

  5. 現在のプログラムのパブリック シンボル。