Partilhar via


IDiaSessionEx

Fornece um contexto de consulta estendido para símbolos de depuração.

Sintaxe

IDiaSessionEx : IDiaSession

Metodologia

A tabela a seguir mostra os métodos de IDiaSessionEx.

Método Descrição
IDiaSessionEx::isFastLinkPDB Recupera um booleano indicando que as informações de depuração de origem foram produzidas com /DEBUG:fastlink.
IDiaSessionEx::isPortablePDB Recupera um booleano indicando que as informações de depuração de origem estão usando o formato PDB portátil .
'IDiaSessionEx::getSourceLinkInfo' Recupera uma enumeração de informações de link de origem.

Comentários

É importante chamar o método IDiaSession::put_loadAddress depois de criar o objeto IDiaSession — e o valor passado para o método put_loadAddress deve ser diferente de zero — para que quaisquer propriedades de endereço virtual (VA) de símbolos sejam acessíveis. O endereço de carregamento vem de qualquer programa carregado o executável que está sendo depurado. Por exemplo, você pode chamar a função Win32 GetModuleInformation para recuperar o endereço de carga para o executável, dado um identificador para o executável.

Como IDiaSessionEx herda de IDiaSession, ele alos tem todos os mesmos métodos, e pode ser passado para qualquer função que aceite um IDiaSession.

Exemplo

Este exemplo mostra como obter a interface IDiaSessionEx como parte de uma inicialização geral do SDK do Debug Interface Access (DIA).

CComPtr<IDiaDataSource> pSource;
ComPtr<IDiaSessionEx> psessionex;

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 msdia140.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" );
        }
    }

    ComPtr<IDiaSession> psession;
    if ( FAILED( pSource->openSession( &psession ) ) )
    {
        Fatal( "openSession" );
    }

    if ( FAILED( psession.QueryInterface(&psessionex) ) )
    {
        Fatal( "Failed to upgrade from IDiaSession to IDiaSessionEx, are you using an older version of msdia140.dll?" );
    }
}

Requerimentos

Cabeçalho: Dia2.h

Biblioteca: diaguids.lib

DLL: msdia140.dll

Ver também