Visual Studio デバッガーでのコンテキスト演算子 (C++)
C++ のコンテキスト演算子を使用して、ブレークポイントの場所、変数名、または式を修飾できます。 コンテキスト演算子は、ローカル名で隠されていてほかにアクセス方法がない外部スコープから名前を指定するために利用できます。
構文
コンテキストを指定する 2 つの方法があります。
{,,[module] } expression
中かっこ内には、2 個のコンマとモジュール (実行可能ファイルまたは DLL) 名か完全パスが必要です。
たとえば、
EXAMPLE.dll
のSomeFunction
関数にブレークポイントを設定する場合は、次のようになります。{,,EXAMPLE.dll}SomeFunction
module!expression
EXAMPLE.dll!SomeFunction
module は、モジュールの名前です。 完全パスを使用することで、同じ名前のモジュールのあいまいさを解消することができます。
module のパスにコンマ、埋め込みスペース、または中かっこが含まれる場合は、コンテキスト パーサーが文字列を適切に認識できるように、パスを引用符で囲む必要があります。 単一引用符は Windows ファイル名の一部として解釈されるので、二重引用符を使用する必要があります。 たとえば、次のように入力します。
{,,"a long, long, library name.dll"} g_Var
expression は任意の有効な C++ 式で、 module内の関数名、変数名、ポインター アドレスなどの有効なターゲットに解決します。
式エバリュエーターが式に含まれる記号を見つけると、次の順序で記号を検索します。
構文のスコープの外部。現在のブロック (角かっこで囲まれた一連のステートメント) から、外側のブロックに進みます。 現在のブロックは、現在の場所 (命令ポインター アドレス) を含むコードです。
関数スコープ。 現在の関数です。
クラス スコープ。現在の場所が C++ メンバー関数内部の場合です。 クラス スコープにはすべての基底クラスが含まれます。 式エバリュエーターは、通常の優先順位規則を使用します。
現在のモジュール内のグローバル シンボル。
現在のプログラム内のパブリック シンボル。