Поделиться через


IDiaSession

Предоставляет контекст запроса для символов отладки.

Синтаксис

IDiaSession : IUnknown

Методы

В следующей таблице показаны методы IDiaSession.

Метод Description
IDiaSession::get_loadAddress Извлекает адрес загрузки исполняемого файла, соответствующего символам в этом хранилище символов. Это то же значение, которое было передано методу put_loadAddress .
IDiaSession::put_loadAddress Задает адрес загрузки исполняемого файла, соответствующий символам в этом хранилище символов. Примечание. Важно вызвать этот метод при получении IDiaSession объекта и перед началом использования объекта.
IDiaSession::get_globalScope Извлекает ссылку на глобальную область.
IDiaSession::getEnumTables Извлекает перечислитель для всех таблиц, содержащихся в хранилище символов.
IDiaSession::getSymbolsByAddr Извлекает перечислитель для всех именованных символов в статических расположениях.
IDiaSession::findChildren Извлекает все дочерние элементы указанного родительского идентификатора, соответствующего имени и типу символов.
IDiaSession::findChildrenEx Извлекает все дочерние элементы указанного родительского идентификатора, соответствующего имени и типу символов, включая оптимизированные локальные значения.
IDiaSession::findChildrenExByAddr Извлекает все дочерние элементы указанного родительского идентификатора, соответствующего типу имени и символа, включая оптимизированные локальные значения, содержащие или ближайшие к указанному адресу.
IDiaSession::findChildrenExByVA Извлекает все дочерние элементы указанного родительского идентификатора, соответствующего типу имени и символа, включая оптимизированные локальные значения, содержащие или ближайшие к ним, указанный виртуальный адрес (VA).
IDiaSession::findChildrenExByRVA Извлекает все дочерние элементы указанного родительского идентификатора, соответствующего имени и типу символов, включая оптимизированные локальные значения, содержащие или ближайшие к ним относительные виртуальные адреса (RVA).
IDiaSession::findSymbolByAddr Извлекает указанный тип символа, содержащий или ближайший к указанному адресу.
IDiaSession::findSymbolByRVA Извлекает указанный тип символа, содержащий или ближайший к указанному относительному виртуальному адресу (RVA).
IDiaSession::findSymbolByVA Извлекает указанный тип символа, содержащий или ближайший к указанному виртуальному адресу (VA).
IDiaSession::findSymbolByToken Извлекает символ, содержащий указанный маркер метаданных.
IDiaSession::symsAreEquiv Проверяет, эквивалентны ли два символа.
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::findAcceleratorInlineesByLinenum Возвращает перечисление символов для встроенных кадров, соответствующих указанному исходному расположению.
IDiaSession::findSymbolsForAcceleratorPointerTag Возвращает перечисление символов для переменной, которая соответствует указанному значению тега в родительской функции заглушки акселератора.
IDiaSession::findSymbolsByRVAForAcceleratorPointerTag Учитывая соответствующее значение тега, этот метод возвращает перечисление символов, содержащихся в указанной функции заглушки родительского ускорителя по указанному относительному виртуальному адресу.
IDiaSession::findAcceleratorInlineesByName Возвращает перечисление символов для встроенных кадров, соответствующих указанному имени встроенной функции.
IDiaSession::addressForVA Возвращает эквивалентный адрес для указанного виртуального адреса (VA).
IDiaSession::addressForRVA Возвращает эквивалентный адрес для указанного относительного виртуального адреса (RVA).
IDiaSession::findILOffsetsByAddr Извлекает перечисление, позволяющее клиенту выполнять итерацию по смещениям MSIL в указанном диапазоне адресов.
IDiaSession::findILOffsetsByRVA Извлекает перечисление, позволяющее клиенту выполнять итерацию по смещениям MSIL в пределах указанного относительного диапазона виртуального адреса (RVA).
IDiaSession::findILOffsetsByVA Извлекает перечисление, позволяющее клиенту выполнять итерацию по смещениям MSIL в заданном диапазоне виртуальных адресов (VA).
IDiaSession::findInputAssemblyFiles Извлекает перечисление, позволяющее клиенту выполнять итерацию с помощью файлов сборок .NET Native.
IDiaSession::findInputAssembly Извлекает файл входной сборки .NET Native по индексу.
IDiaSession::findInputAssemblyById Извлекает входной файл сборки .NET Native по уникальному идентификатору.
IDiaSession::getFuncMDTokenMapSize Извлекает размер в байтах карты маркеров метаданных .NET Native.
IDiaSession::getFuncMDTokenMap Извлекает содержимое карты маркеров метаданных .NET Native.
IDiaSession::getTypeMDTokenMapSize Извлекает размер в байтах карты маркеров типа метаданных .NET Native.
IDiaSession::getTypeMDTokenMap Извлекает содержимое карты маркеров типа метаданных .NET Native.
IDiaSession::getNumberOfFunctionFragments_VA Извлекает количество дискозначных фрагментов для функции по указанному виртуальному адресу (VA).
IDiaSession::getNumberOfFunctionFragments_RVA Извлекает количество дискозначных фрагментов для функции по указанному относительному виртуальному адресу (RVA).
IDiaSession::getFunctionFragments_VA Извлекает адреса и длину дисконимых фрагментов для функции по указанному виртуальному адресу (VA).
IDiaSession::getFunctionFragments_RVA Извлекает адреса и длину дискотипных фрагментов для функции по указанному относительному виртуальному адресу (RVA).
IDiaSession::getExports Извлекает перечислитель для всех экспортированных символов.
IDiaSession::getHeapAllocationSites Извлекает перечислитель для всех SymTagHeapAllocationSite символов.
IDiaSession::findInputAssemblyFile Извлекает файл входной сборки .NET Native, который является родительским элементом указанного символа.

Замечания

Важно вызвать IDiaSession::put_loadAddress метод после создания IDiaSession объекта , а значение, переданное put_loadAddress методу, должно быть ненулевым , для доступа к любым свойствам виртуальных адресов (VA) символов. Адрес загрузки поступает из любой программы, загружаемой исполняемым файлом, отлаживаемым. Например, можно вызвать функцию GetModuleInformation Win32, чтобы получить адрес нагрузки для исполняемого файла, учитывая дескриптор исполняемого файла.

Пример

В этом примере показано, как получить IDiaSession интерфейс в рамках общего инициализации пакета SDK для доступа к интерфейсу отладки (DIA).

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

См. также