IDiaSession
デバッグ シンボルのクエリ コンテキストを提供します。
IDiaSession : IUnknown
メソッド
IDiaSession のメソッドを次の表に示します。
メソッド |
説明 |
---|---|
このシンボル ストア内のシンボルに対応する実行可能ファイルの読み込みアドレスを取得します。 これは、put_loadAddress メソッドに渡された値と同じ値です。 |
|
このシンボル ストア内のシンボルに対応する実行可能ファイルの読み込みアドレスを設定します。 注意 IDiaSession オブジェクトを取得して、オブジェクトを使い始める前に、このメソッドを呼び出すことが重要です。 |
|
グローバル スコープへの参照を取得します。 |
|
シンボル ストアに格納されているすべてのテーブルの列挙子を取得します。 |
|
静的な場所にあるすべての名前付きシンボルの列挙子を取得します。 |
|
名前およびシンボル型と一致する、指定された親識別子のすべての子を取得します。 |
|
指定されたアドレスを含むか、または最も近くにある、指定されたシンボル型を取得します。 |
|
指定された相対仮想アドレス (RVA) を含むか、または最も近くにある、指定されたシンボル型を取得します。 |
|
指定された仮想アドレス (VA) を含むか、または最も近くにある、指定されたシンボル型を取得します。 |
|
指定されたメタデータ トークンを含むシンボルを取得します。 |
|
2 個のシンボルが同等かどうかをチェックします。 |
|
一意の識別子によってシンボルを取得します。 |
|
指定された相対仮想アドレスおよびオフセットを含むか、または最も近くにある、指定されたシンボル型を取得します。 |
|
指定された仮想アドレスおよびオフセットを含むか、または最も近くにある、指定されたシンボル型を取得します。 |
|
コンパイル単位と名前でソース ファイルを取得します。 |
|
ソース ファイル識別子でソース ファイルを取得します。 |
|
指定されたコンパイル単位およびソース ファイル識別子内にある行番号を取得します。 |
|
指定されたアドレスを含む、指定されたコンパイル単位内にある行を取得します。 |
|
指定された相対仮想アドレスを含む、指定されたコンパイル単位内にある行を取得します。 |
|
指定されたアドレス範囲に含まれる行の行番号情報を検索します。 |
|
ソース ファイルおよび行番号で指定されたコンパイル単位内にある行を取得します。 |
|
コンパイル プロセスの属性プロバイダーまたはその他のコンポーネントによってシンボル ストアに配置されたソースを取得します。 |
|
デバッグ データ ストリームの列挙シーケンスを取得します。 |
|
クライアントが特定のアドレスのインライン フレームすべての反復処理できる列挙型を取得します。 |
|
クライアントが指定した相対仮想アドレス (RVA) のインライン フレームすべての反復処理できる列挙型を取得します。 |
|
クライアントが指定された仮想アドレス (VA) のインライン フレームすべての反復処理できる列挙型を取得します。 |
|
クライアントが、指定した親シンボルによって、直接または間接的にインライン関数のすべての行番号情報によって、反復処理できる列挙型を取得します。 |
|
クライアントが、指定した親シンボルによって、直接または間接的に、インライン展開され、指定したアドレスの範囲に含まれるすべての関数の行番号情報を反復処理できる列挙型を取得します。 |
|
クライアントが、指定した親シンボルによって、直接または間接的に、インライン展開され、指定した相対仮想アドレス (RVA) に含まれるすべての関数の行番号情報を反復処理できる列挙型を取得します。 |
|
クライアントが、指定した親シンボルによって、直接または間接的に、インライン展開され、指定された仮想アドレス (VA) に含まれるすべての関数の行番号情報を反復処理できる列挙型を取得します。 |
|
クライアントが指定したソース ファイルと行番号で、直接または間接的に、インライン関数のすべての行番号情報を反復処理できる列挙型を取得します。 |
|
クライアントが、指定した名前に一致するすべてのインライン関数の行番号情報を反復処理できる列挙型を取得します。 |
|
親アクセラレータのスタブ関数でに指定したタグの値は対応する変数のシンボルの列挙体を返します。 |
|
対応するタグの値の場合、このメソッドは、指定した相対仮想アドレスの指定した親のアクセラレータのスタブの関数に含まれるシンボルの列挙体を返します。 |
|
指定したインライン関数の名前に対応するインライン フレームのシンボルの列挙体を返します。 |
|
指定されたソースの場所に対応するインライン フレームのシンボルの列挙体を返します。 |
解説
IDiaSession オブジェクトを作成した後に put_loadAddress メソッドを呼び出すことが重要です。そして、シンボルの仮想アドレス (VA) プロパティにアクセスできるように、IDiaSession::put_loadAddress メソッドに渡した値はゼロ以外である必要があります。 読み込みアドレスは、デバッグ対象の実行可能ファイルを読み込みんだプログラムから取得されます。 たとえば、実行可能ファイルへのハンドルを指定して、実行可能ファイルの読み込みアドレスを取得するには、Win32 関数 GetModuleInformation を呼び出します。
使用例
この例は、DIA SDK の一般的な初期化の一部として IDiaSession インターフェイスを取得する方法を示しています。
CComPtr<IDiaDataSource> pSource;
ComPtr<IDiaSession> psession;
void InitializeDIA(const char *szFilename)
{
HRESULT hr = CoCreateInstance( CLSID_DiaSource,
NULL,
CLSCTX_INPROC_SERVER,
__uuidof( IDiaDataSource ),
(void **) &pSource);
if (FAILED(hr))
{
Fatal("Could not CoCreate CLSID_DiaSource. Register msdia80.dll." );
}
wchar_t wszFilename[ _MAX_PATH ];
mbstowcs( wszFilename,
szFilename,
sizeof( wszFilename )/sizeof( wszFilename[0] ) );
if ( FAILED( pSource->loadDataFromPdb( wszFilename ) ) )
{
if ( FAILED( pSource->loadDataForExe( wszFilename, NULL, NULL ) ) )
{
Fatal( "loadDataFromPdb/Exe" );
}
}
if ( FAILED( pSource->openSession( &psession ) ) )
{
Fatal( "openSession" );
}
}
必要条件
ヘッダー: Dia2.h
ライブラリ: diaguids.lib
DLL: msdia80.dll