シンボルの構文とシンボルの照合
シンボルを使用すると、デバッグ中のプログラムによって使用されるトークンを直接操作できます。 たとえば、コマンド bp メインを使用して関数 メインに ブレークポイントを設定したり、コマンド dd MyInt L1 を使用して 整数変数 MyInt を表示したりできます。
多くの場合、シンボルはデバッガー コマンドのパラメーターとして使用できます。 これはほとんどの数値パラメーターでサポートされており、一部のテキスト パラメーターでもサポートされています。 シンボル構文の一般的な規則に加えて、これらの各ケースに適用されるシンボル構文規則もあります。
シンボル構文の一般的な規則
シンボル名は 1 つ以上の文字で構成されますが、常に文字、アンダースコア (_)、疑問符 (?)、ドル記号 ($) で始まります。
シンボル名は、モジュール名で修飾できます。 感嘆符 (!) は、 モジュール名をシンボル (例: mymodule!メイン) から分離します。 モジュール名が使用されていない場合でも、シンボルの前に感嘆符を付けることができます。 モジュール名のない感嘆符を使用すると、ローカル変数の場合でも、パラメーターが 16 進数ではなく名前であることをデバッガー コマンドに示すために特に便利です。 たとえば、変数 フェード はアドレスとして dt (Display Type) コマンドによって読み取られます。ただし、前に感嘆符が付いているか、-n オプションが使用されている場合を除きます。 ただし、シンボルがローカルであることを指定するには、$!lime のように、その前にドル記号 ( $ ) と感嘆符 ( ! )を付けます。
シンボル名では、大文字と小文字は完全に区別されません。 つまり、プログラム内の myInt と MyInt がデバッガーによって正しく認識されません。これらのいずれかを参照するコマンドは、コマンドの大文字化方法に関係なく、他のコマンドにアクセスできます。
数値式のシンボル構文
デバッガーは、Microsoft Macro Assembler (MASM) 式と C++ 式という 2 つの異なる種類の数値式を理解します。 シンボルに関する限り、これら 2 つの形式の構文は次のように異なります。
MASM 式では、各シンボルはアドレスとして解釈されます。 シンボルが何を指すかに応じて、このアドレスはグローバル変数、ローカル変数、関数、セグメント、モジュール、またはその他の認識されたラベルのアドレスになります。
C++ 式では、各シンボルはそのタイプに従って解釈されます。 シンボルが何を指すかに応じて、整数、データ構造、関数ポインター、またはその他のデータ タイプとして解釈される場合があります。 C++ データ型に対応しないシンボル (未変更のモジュール名など) は、構文エラーになります。
各種類の構文を使用するタイミングと方法については、「式 の評価」を参照してください。
MASM 式の構文を使用している場合、16 進数またはレジスタとして解釈できるシンボル ( BadFeed、 ebXなど) には、常に感嘆符のプレフィックスを付ける必要があります。 これにより、デバッガーでシンボルとして認識されます。
ss (シンボル サフィックスの設定) コマンドを使用して、シンボル サフィックスを設定できます。 これにより、見つからないシンボル名に "A" または "W" が自動的に追加されるようにデバッガーに指示されます。
多くの Win32 ルーチンは、ASCII バージョンと Unicode バージョンの両方に存在します。 多くの場合、これらのルーチンの名前の末尾に "A" または "W" が追加されます。 シンボル サフィックスを使用すると、これらのシンボルを検索するときにデバッガーが役立つようになります。
サフィックスの照合は、既定ではアクティブではありません。
テキスト式のシンボル構文
シンボルは、 bm (ブレークポイントの設定) や x (シンボルの検査)など、一部のコマンドのテキスト パラメーターで使用できます。
これらのテキスト パラメーターは、さまざまなワイルドカードおよび指定子をサポートします。 詳細については、「文字列ワイルドカードの構文」を参照してください。 標準の文字列 wildカード に加えて、シンボルを指定するために使用されるテキスト式には先頭にアンダースコアを付けることができます。 これをシンボルと照合すると、デバッガーはこれを任意の数のアンダースコア (ゼロでも) として扱います。
シンボル サフィックスは、テキスト式でシンボルを照合する場合には使用されません。