IDiaSessionEx
Fournit un contexte de requête étendu pour les symboles de débogage.
Syntaxe
IDiaSessionEx : IDiaSession
Méthodes
Le tableau suivant présente les méthodes de IDiaSessionEx
.
Méthode | Description |
---|---|
IDiaSessionEx::isFastLinkPDB |
Récupère une valeur booléenne indiquant que les informations de débogage source ont été produites avec /DEBUG:fastlink . |
IDiaSessionEx::isPortablePDB |
Récupère une valeur booléenne indiquant que les informations de débogage source utilisent le format PDB portable. |
'IDiaSessionEx ::getSourceLinkInfo' | Récupère une énumération des informations de lien source. |
Notes
Il est important d’appeler la IDiaSession::put_loadAddress
méthode après avoir créé l’objet IDiaSession
et que la valeur passée à la put_loadAddress
méthode doit être différente de zéro pour que toutes les propriétés d’adresse virtuelle (VA) des symboles soient accessibles. L’adresse de chargement provient du programme qui a chargé l’exécutable en cours de débogage. Par exemple, vous pouvez appeler la fonction Win32 GetModuleInformation
pour récupérer l’adresse de chargement de l’exécutable, pour un certain descripteur d’exécutable.
Comme IDiaSessionEx
hérite de IDiaSession
, il alos a toutes les mêmes méthodes et peut être passé à n’importe quelle fonction qui accepte un IDiaSession
.
Exemple
Cet exemple montre comment obtenir l’interface IDiaSessionEx
dans le cadre d’une initialisation générale du SDK Dia (Debug Interface Access).
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?" );
}
}
Spécifications
En-tête : Dia2.h
Bibliothèque : diaguids.lib
DLL : msdia140.dll