Consultar el archivo .pdbQuerying the .Pdb File

Un archivo de base de datos de programa (extensión .pdb) es un archivo binario que contiene el tipo y la información de depuración simbólica recopilada durante el transcurso de compilar y vincular el proyecto.A program database file (extension .pdb) is a binary file that contains type and symbolic debugging information gathered over the course of compiling and linking the project. Se crea un archivo PDB cuando se compila un programa de C o C++ con /Zi o /Zi o un Visual BasicVisual Basic, Visual C#Visual C#, o JScriptJScript programar con el /debug opción.A PDB file is created when you compile a C/C++ program with /ZI or /Zi or a Visual BasicVisual Basic, Visual C#Visual C#, or JScriptJScript program with the /debug option. Los archivos objeto contienen referencias en el archivo .pdb de la información de depuración.Object files contain references into the .pdb file for debugging information. Para obtener más información sobre los archivos pdb, consulte archivos PDB.For more information on pdb files, see PDB Files. Una aplicación de DIA puede usar los siguientes pasos generales para obtener más detalles sobre los distintos símbolos, objetos y elementos de datos dentro de una imagen ejecutable.A DIA application can use the following general steps to obtain details about the various symbols, objects, and data elements within an executable image.

Para consultar el archivo .pdbTo query the .pdb file

  1. Adquirir un origen de datos mediante la creación de un IDiaDataSource interfaz.Acquire a data source by creating an IDiaDataSource interface.

    CComPtr<IDiaDataSource> pSource;  
    hr = CoCreateInstance( CLSID_DiaSource,  
                           NULL,  
                           CLSCTX_INPROC_SERVER,  
                           __uuidof( IDiaDataSource ),  
                          (void **) &pSource);  
    
    if (FAILED(hr))  
    {  
        Fatal("Could not CoCreate CLSID_DiaSource. Register msdia80.dll." );  
    }  
    
  2. Llame a Loaddatafrompdb o Loaddataforexe para cargar la información de depuración.Call IDiaDataSource::loadDataFromPdb or IDiaDataSource::loadDataForExe to load the debugging information.

    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" );  
        }  
    }  
    
  3. Llame a Idiadatasource para abrir un IDiaSession para obtener acceso a la información de depuración.Call IDiaDataSource::openSession to open an IDiaSession to gain access to the debugging information.

    CComPtr<IDiaSession> psession;  
    if ( FAILED( pSource->openSession( &psession ) ) )   
    {  
        Fatal( "openSession" );  
    }  
    
  4. Use los métodos de IDiaSession para consultar los símbolos en el origen de datos.Use the methods in IDiaSession to query for the symbols in the data source.

    CComPtr<IDiaSymbol> pglobal;  
    if ( FAILED( psession->get_globalScope( &pglobal) ) )  
    {  
        Fatal( "get_globalScope" );  
    }  
    
  5. Use el IDiaEnum* interfaces para enumerar y examinar los símbolos u otros elementos de información de depuración.Use the IDiaEnum* interfaces to enumerate and scan through the symbols or other elements of debug information.

    CComPtr<IDiaEnumTables> pTables;  
    if ( FAILED( psession->getEnumTables( &pTables ) ) )  
    {  
        Fatal( "getEnumTables" );  
    }  
    CComPtr< IDiaTable > pTable;  
    while ( SUCCEEDED( hr = pTables->Next( 1, &pTable, &celt ) ) && celt == 1 )  
    {  
         // Do something with each IDiaTable.  
    }  
    

Vea tambiénSee Also

IDiaDataSourceIDiaDataSource