Share via


コンテキスト演算子 (C/C++ 言語式)

このトピックの内容は、次の製品に該当します。

エディション

Visual Basic

C#

F#

C++

Web Developer

Express

トピック該当なし トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

Pro、Premium、Ultimate

トピック該当なし トピック該当なし トピック該当なし

ネイティブのみ

トピック該当なし

コンテキスト演算子は、ネイティブなデバッガーによって提供される追加の演算子です。 ネイティブ コードをデバッグするときは、コンテキスト演算子を使ってブレークポイントの場所、変数名、または式を修飾できます。

  • {[function],[source],[module] } location

  • {[function],[source],[module] } variable_name

  • {[function],[source],[module] } expression

角かっこには、関数名、ソース ファイル パス、およびモジュール (実行可能ファイルまたは DLL) パスを任意に組み合わせて指定できます。 コンテキスト演算子は、ローカル名で隠されていてほかにアクセス方法がない外部スコープから名前を指定するなどの目的に利用できます。

使用例

EXAMPLE.CPP の行 301 にブレークポイントを設定するには、次のコードを使用します。

{,EXAMPLE.CPP,}@301

function または module のどちらかを省略する場合でも、2 つのコンマは省略できません。 つまり、次の構文は無効です。

{File.c, File.exe} @143 // Invalid syntax

source および module の両方を省略する場合は、コンマを省略できます。 このため、次の構文は有効です。

{Fun} @143

source または module のパスにコンマ、埋め込みスペース、または角かっこが含まれる場合は、コンテキスト パーサーが文字列を適切に認識できるように、パスを引用符で囲む必要があります。 単一引用符は Windows ファイル名の一部として解釈されるので、二重引用符を使用する必要があります。 次に例を示します。

{,"a long, long, name.c", } .143

式エバリュエーターが式に含まれる記号を見つけると、次の順序で記号を検索します。

  1. 構文のスコープの外部。現在のブロック (角かっこで囲まれた一連のステートメント) から、外側のブロックに進みます。 現在のブロックは、現在の場所 (命令ポインター アドレス) を含むコードです。

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

  3. クラス スコープ。現在の場所が C++ メンバー関数内部の場合です。 クラス スコープにはすべての基本クラスが含まれます。 式エバリュエーターは、通常の優先順位規則を使用します。

  4. 現在のモジュール。

  5. グローバル シンボル。

  6. その他のモジュール。

  7. プログラム内のパブリック シンボル。

コンテキスト演算子を使って、検索開始地点を指定したり、現在の場所をバイパスしたりします。 クラスは指定できませんが、クラスのメンバー関数を指定したり、式エバリュエーターで外部を検索したりできます。

参照

その他の技術情報

ネイティブ C++ の式