次の方法で共有


IDebugMethodField::EnumLocals

メソッドの選択されたローカル変数の列挙子を作成します。

構文

int EnumLocals(
    IDebugAddress        pAddress,
    out IEnumDebugFields ppLocals
);

パラメーター

pAddress
[入力] ローカルの取得元のコンテキストまたはスコープを選択するデバッグ アドレスを表す IDebugAddress オブジェクト。

ppLocals
[出力] ローカルの一覧を表す IEnumDebugFields オブジェクトを返します。ローカルがない場合は null 値を返します。

戻り値

成功した場合は、S_OK を返します。ローカルがない場合は、S_FALSE を返します。 それ以外の場合はエラー コードを返します。

解説

指定されたデバッグ アドレスを含むブロック内で定義されている変数のみが列挙されます。 コンパイラによって生成されるローカルを含むすべてのローカルが必要な場合は、EnumAllLocals メソッドを呼び出します。

メソッドには、複数のスコープ コンテキストまたはブロックを含めることができます。 たとえば、次の工夫したメソッドには、2 つの内部ブロックとメソッド本体自体という 3 つのスコープが含まれています。

public void func(int index)
{
    // Method body scope
    int a = 0;
    if (index == 1)
    {
        // Inner scope 1
        int temp1 = a;
    }
    else
    {
        // Inner scope 2
        int temp2 = a;
    }
}

IDebugMethodField オブジェクトは、func メソッド自体を表します。 IDebugAddressInner Scope 1 アドレスに設定して EnumLocals メソッドを呼び出すと、たとえば temp1 変数を含む列挙が返されます。

関連項目