Bagikan melalui


IDiaSession

Menyediakan konteks kueri untuk simbol debug.

Sintaksis

IDiaSession : IUnknown

Metode

Tabel berikut ini memperlihatkan metode IDiaSession.

Metode Deskripsi
IDiaSession::get_loadAddress Mengambil alamat beban untuk file yang dapat dieksekusi yang sesuai dengan simbol di penyimpanan simbol ini. Ini adalah nilai yang sama yang diteruskan ke metode put_loadAddress.
IDiaSession::put_loadAddress Mengatur alamat beban untuk file yang dapat dieksekusi yang sesuai dengan simbol di penyimpanan simbol ini. Catatan: Penting untuk memanggil metode ini ketika Anda mendapatkan objek IDiaSession dan sebelum Anda mulai menggunakan objek.
IDiaSession::get_globalScope Mengambil referensi ke cakupan global.
IDiaSession::getEnumTables Mengambil enumerator untuk semua tabel yang terkandung dalam penyimpanan simbol.
IDiaSession::getSymbolsByAddr Mengambil enumerator untuk semua simbol bernama di lokasi statis.
IDiaSession::findChildren Mengambil semua turunan dari pengidentifikasi induk tertentu yang cocok dengan nama dan jenis simbol.
IDiaSession::findChildrenEx Mengambil semua turunan dari pengidentifikasi induk tertentu yang cocok dengan nama dan jenis simbol, termasuk lokal yang dioptimalkan.
IDiaSession::findChildrenExByAddr Mengambil semua turunan dari pengidentifikasi induk tertentu yang cocok dengan nama dan jenis simbol, termasuk lokal yang dioptimalkan, yang berisi, atau paling dekat dengan, alamat tertentu.
IDiaSession::findChildrenExByVA Mengambil semua anak dari pengidentifikasi induk tertentu yang cocok dengan nama dan jenis simbol, termasuk lokal yang dioptimalkan, yang berisi, atau paling dekat dengan, alamat virtual (VA) tertentu.
IDiaSession::findChildrenExByRVA Mengambil semua turunan dari pengidentifikasi induk tertentu yang cocok dengan nama dan jenis simbol, termasuk lokal yang dioptimalkan, yang berisi, atau paling dekat dengan, alamat virtual relatif (RVA) tertentu.
IDiaSession::findSymbolByAddr Mengambil jenis simbol tertentu yang berisi, atau paling dekat dengan, alamat tertentu.
IDiaSession::findSymbolByRVA Mengambil jenis simbol tertentu yang berisi, atau paling dekat dengan, alamat virtual relatif (RVA) tertentu.
IDiaSession::findSymbolByVA Mengambil jenis simbol tertentu yang berisi, atau paling dekat dengan, alamat virtual (VA) tertentu.
IDiaSession::findSymbolByToken Mengambil simbol yang berisi token metadata tertentu.
IDiaSession::symsAreEquiv Memeriksa untuk melihat apakah dua simbol setara.
IDiaSession::symbolById Mengambil simbol dengan pengidentifikasi uniknya.
IDiaSession::findSymbolByRVAEx Mengambil jenis simbol tertentu yang berisi, atau paling dekat dengan, alamat virtual relatif dan offset tertentu.
IDiaSession::findSymbolByVAEx Mengambil jenis simbol tertentu yang berisi, atau paling dekat dengan, alamat virtual dan offset tertentu.
IDiaSession::findFile Mengambil file sumber menurut kompilasi dan nama.
IDiaSession::findFileById Mengambil file sumber menurut pengidentifikasi file sumber.
IDiaSession::findLines Mengambil nomor baris dalam pengidentifikasi file kompilasi dan sumber tertentu.
IDiaSession::findLinesByAddr Mengambil baris dalam kompilasi tertentu yang berisi alamat tertentu.
IDiaSession::findLinesByRVA Mengambil baris dalam kompilasi tertentu yang berisi alamat virtual relatif tertentu.
IDiaSession::findLinesByVA Menemukan informasi nomor baris untuk baris yang terkandung dalam rentang alamat tertentu.
IDiaSession::findLinesByLinenum Mengambil baris dalam kompilasi tertentu menurut file sumber dan nomor baris.
IDiaSession::findInjectedSource Mengambil sumber yang telah ditempatkan ke penyimpanan simbol oleh penyedia atribut atau komponen lain dari proses kompilasi.
IDiaSession::getEnumDebugStreams Mengambil urutan aliran data debug yang dijumlahkan.
IDiaSession::findInlineFramesByAddr Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui semua bingkai sebaris pada alamat tertentu.
IDiaSession::findInlineFramesByRVA Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui semua bingkai sebaris pada alamat virtual relatif (RVA) tertentu.
IDiaSession::findInlineFramesByVA Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui semua bingkai sebaris pada alamat virtual (VA) tertentu.
IDiaSession::findInlineeLines Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui informasi nomor baris dari semua fungsi yang inlined, langsung atau tidak langsung, oleh simbol induk yang ditentukan.
IDiaSession::findInlineeLinesByAddr Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui informasi nomor baris dari semua fungsi yang sebaris, langsung atau tidak langsung, oleh simbol induk yang ditentukan dan terkandung dalam rentang alamat yang ditentukan.
IDiaSession::findInlineeLinesByRVA Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui informasi nomor baris semua fungsi yang sebaris, langsung atau tidak langsung, oleh simbol induk yang ditentukan dan terkandung dalam alamat virtual relatif (RVA) yang ditentukan.
IDiaSession::findInlineeLinesByVA Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui informasi nomor baris semua fungsi yang sebaris, langsung atau tidak langsung, oleh simbol induk yang ditentukan dan terkandung dalam alamat virtual (VA) yang ditentukan.
IDiaSession::findInlineeLinesByLinenum Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui informasi nomor baris semua fungsi yang sebaris, langsung atau tidak langsung, dalam file sumber dan nomor baris yang ditentukan.
IDiaSession::findInlineesByName Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui informasi nomor baris dari semua fungsi bergaris yang cocok dengan nama yang ditentukan.
IDiaSession::findAcceleratorInlineesByLinenum Mengembalikan enumerasi simbol untuk bingkai sebaris yang sesuai dengan lokasi sumber yang ditentukan.
IDiaSession::findSymbolsForAcceleratorPointerTag Mengembalikan enumerasi simbol untuk variabel yang sesuai dengan nilai tag yang ditentukan dalam fungsi stub Akselerator induk.
IDiaSession::findSymbolsByRVAForAcceleratorPointerTag Mengingat nilai tag yang sesuai, metode ini mengembalikan enumerasi simbol yang terkandung dalam fungsi stub Akselerator induk tertentu pada alamat virtual relatif tertentu.
IDiaSession::findAcceleratorInlineesByName Mengembalikan enumerasi simbol untuk bingkai sebaris yang sesuai dengan nama fungsi sebaris yang ditentukan.
IDiaSession::addressForVA Mengembalikan alamat yang setara untuk alamat virtual (VA) yang ditentukan.
IDiaSession::addressForRVA Mengembalikan alamat yang setara untuk alamat virtual relatif (RVA) yang ditentukan.
IDiaSession::findILOffsetsByAddr Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui offset MSIL dalam rentang alamat tertentu.
IDiaSession::findILOffsetsByRVA Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui offset MSIL dalam rentang alamat virtual relatif (RVA) tertentu.
IDiaSession::findILOffsetsByVA Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui offset MSIL dalam rentang alamat virtual (VA) tertentu.
IDiaSession::findInputAssemblyFiles Mengambil enumerasi yang memungkinkan klien untuk melakukan iterasi melalui file rakitan input .NET Native.
IDiaSession::findInputAssembly Mengambil file rakitan input .NET Native menurut indeks.
IDiaSession::findInputAssemblyById Mengambil file rakitan input .NET Native oleh pengidentifikasi unik.
IDiaSession::getFuncMDTokenMapSize Mengambil ukuran, dalam byte, dari peta token fungsi metadata .NET Native.
IDiaSession::getFuncMDTokenMap Mengambil konten peta token fungsi metadata .NET Native.
IDiaSession::getTypeMDTokenMapSize Mengambil ukuran, dalam byte, dari peta token jenis metadata .NET Native.
IDiaSession::getTypeMDTokenMap Mengambil konten peta token jenis metadata .NET Native.
IDiaSession::getNumberOfFunctionFragments_VA Mengambil jumlah fragmen yang tidak disarankan untuk fungsi pada alamat virtual (VA) yang ditentukan.
IDiaSession::getNumberOfFunctionFragments_RVA Mengambil jumlah fragmen yang tidak disarankan untuk fungsi pada alamat virtual relatif (RVA) yang ditentukan.
IDiaSession::getFunctionFragments_VA Mengambil alamat dan panjang fragmen yang tidak disinggung untuk fungsi pada alamat virtual (VA) yang ditentukan.
IDiaSession::getFunctionFragments_RVA Mengambil alamat dan panjang fragmen yang tidak disinggung untuk fungsi pada alamat virtual relatif (RVA) yang ditentukan.
IDiaSession::getExports Mengambil enumerator untuk semua simbol yang diekspor.
IDiaSession::getHeapAllocationSites Mengambil enumerator untuk semua simbol SymTagHeapAllocationSite.
IDiaSession::findInputAssemblyFile Mengambil file rakitan input .NET Native yang merupakan induk dari simbol yang ditentukan.

Komentar

Penting untuk memanggil metode IDiaSession::put_loadAddress setelah membuat objek IDiaSession — dan nilai yang diteruskan ke metode put_loadAddress harus bukan nol - agar properti alamat virtual (VA) simbol apa pun dapat diakses. Alamat beban berasal dari program apa pun yang memuat executable yang sedang di-debug. Misalnya, Anda dapat memanggil fungsi Win32 GetModuleInformation untuk mengambil alamat beban untuk yang dapat dieksekusi, diberikan handel ke yang dapat dieksekusi.

Contoh

Contoh ini menunjukkan cara mendapatkan antarmuka IDiaSession sebagai bagian dari inisialisasi umum SDK Akses Antarmuka Debug (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" );
    }
}

Persyaratan

Header: Dia2.h

Pustaka: diaguids.lib

DLL: msdia80.dll

Lihat juga