IDiaSession
デバッグ シンボルのクエリ コンテキストを提供します。
構文
IDiaSession : IUnknown
メソッド
次の表に、IDiaSession
のメソッドを示します。
メソッド | 説明 |
---|---|
IDiaSession::get_loadAddress | このシンボル ストアのシンボルに対応する実行可能ファイルの読み込みアドレスを取得します。 これは、put_loadAddress メソッドに渡された値と同じです。 |
IDiaSession::put_loadAddress | このシンボル ストアのシンボルに対応する実行可能ファイルの読み込みアドレスを設定します。 注: このメソッドは、IDiaSession オブジェクトの取得時およびオブジェクトの使用を開始する前に呼び出すことが重要です。 |
IDiaSession::get_globalScope | グローバル スコープへの参照を取得します。 |
IDiaSession::getEnumTables | シンボル ストアに含まれる全テーブルの列挙子を取得します。 |
IDiaSession::getSymbolsByAddr | 静的な場所にあるすべての名前付きシンボルの列挙子を取得します。 |
IDiaSession::findChildren | 指定された親識別子の子で、名前とシンボルの種類に一致するものをすべて取得します。 |
IDiaSession::findSymbolByAddr | 指定したアドレスを含む、またはそれに最も近い、指定したシンボルの種類を取得します。 |
IDiaSession::findSymbolByRVA | 指定された相対仮想アドレス (RVA) を含む、またはそれに最も近い、指定されたシンボルの種類を取得します。 |
IDiaSession::findSymbolByVA | 指定された仮想アドレス (VA) を含む、またはそれに最も近い、指定されたシンボルの種類を取得します。 |
IDiaSession::findSymbolByToken | 指定されたメタデータ トークンを含むシンボルを取得します。 |
IDiaSession::symsAreEquiv | 2 つのシンボルが等しいかどうかを確認します。 |
IDiaSession::symbolById | シンボルを一意の識別子ごとに取得します。 |
IDiaSession::findSymbolByRVAEx | 指定された相対仮想アドレスとオフセットを含む、またはそれに最も近い、指定されたシンボルの種類を取得します。 |
IDiaSession::findSymbolByVAEx | 指定された仮想アドレスとオフセットを含む、またはそれに最も近い、指定されたシンボルの種類を取得します。 |
IDiaSession::findFile | コンパイル単位と名前を指定してソース ファイルを取得します。 |
IDiaSession::findFileById | ソース ファイルの識別子を指定してソース ファイルを取得します。 |
IDiaSession::findLines | 指定されたコンパイル単位とソース ファイルの識別子内の行番号を取得します。 |
IDiaSession::findLinesByAddr | 指定されたアドレスを含む、指定されたコンパイル単位内の行を取得します。 |
IDiaSession::findLinesByRVA | 指定された相対仮想アドレスを含む、指定されたコンパイル単位内の行を取得します。 |
IDiaSession::findLinesByVA | 指定されたアドレス範囲に含まれる行の行番号情報を検索します。 |
IDiaSession::findLinesByLinenum | 指定されたコンパイル単位内の行をソース ファイルと行番号で取得します。 |
IDiaSession::findInjectedSource | 属性プロバイダーまたはコンパイル プロセスの他のコンポーネントによりシンボル ストアに配置されたソースを取得します。 |
IDiaSession::getEnumDebugStreams | デバッグ データ ストリームの列挙シーケンスを取得します。 |
IDiaSession::findInlineFramesByAddr | 指定のアドレス上のすべてのインライン フレームをクライアントが反復処理できるようにする列挙子を取得します。 |
IDiaSession::findInlineFramesByRVA | 指定された相対仮想アドレス (RVA) 上のすべてのインライン フレームをクライアントが反復処理できるようにする列挙型を取得します。 |
IDiaSession::findInlineFramesByVA | 指定した仮想アドレス (VA) 上のすべてのインライン フレームをクライアントが反復処理できるようにする列挙子を取得します。 |
IDiaSession::findInlineeLines | 指定の親シンボルで直接または間接的にインライン化されているすべての関数の行番号情報をクライアントが反復処理することを可能にする列挙体を取得します。 |
IDiaSession::findInlineeLinesByAddr | 指定された親シンボルで直接または間接的にインライン化され、指定されたアドレス範囲内に含まれているすべての関数の行番号情報をクライアントが反復処理できるようにする列挙を取得します。 |
IDiaSession::findInlineeLinesByRVA | 指定された親シンボルで直接または間接的にインライン化されていて、かつ指定された相対仮想アドレス (RVA) 内に含まれている、すべての関数の行番号情報をクライアントで反復処理するための列挙値を取得します。 |
IDiaSession::findInlineeLinesByVA | 指定された親シンボルで直接または間接的にインライン化され、指定された仮想アドレス (VA) 内に含まれているすべての関数の行番号情報をクライアントが反復処理できるようにする列挙を取得します。 |
IDiaSession::findInlineeLinesByLinenum | 指定されたソース ファイルと行番号に直接または間接的にインライン化されているすべての関数の行番号情報をクライアントが反復処理することを可能にする列挙体を取得します。 |
IDiaSession::findInlineesByName | クライアントが反復処理できるように、指定された名前に一致するすべてのインライン関数の行番号情報の列挙を取得します。 |
IDiaSession::findSymbolsForAcceleratorPointerTag | 親アクセラレータ スタブ関数で指定のタグ値が対応する変数のシンボルの列挙型を返します。 |
IDiaSession::findSymbolsByRVAForAcceleratorPointerTag | 対応するタグ値を指定すると、このメソッドは、指定された相対仮想アドレスにある指定された親アクセラレータ スタブ関数に含まれているシンボルの列挙を返します。 |
IDiaSession::findAcceleratorInlineesByName | 指定されたインライン関数名に対応するインライン フレームのシンボルの列挙を返します。 |
IDiaSession::findAcceleratorInlineesByLinenum | 指定したソースの場所に対応するインライン フレームのシンボルの列挙子を返します。 |
解説
シンボルの仮想アドレス (VA) プロパティにアクセスできるようにするには、IDiaSession
オブジェクトを作成した後で IDiaSession::put_loadAddress メソッドを呼び出すことが重要です。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
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示