IDiaLineNumberIDiaLineNumber

Accede a información que describe el proceso de asignación de un bloque de bytes de texto de la imagen a un número de línea del archivo de código fuente.Accesses information that describes the process of mapping from a block of bytes of image text to a source file line number.

SintaxisSyntax

IDiaLineNumber : IUnknown  

Métodos en orden de VtableMethods in Vtable Order

La tabla siguiente muestran los métodos de IDiaLineNumber.The following table shows the methods of IDiaLineNumber.

MétodoMethod DescripciónDescription
IDiaLineNumber::get_compilandIDiaLineNumber::get_compiland Recupera una referencia al símbolo de la operación de compilación que han contribuido a los bytes del texto de la imagen.Retrieves a reference to the symbol for the compiland that contributed the bytes of image text.
IDiaLineNumber::get_sourceFileIDiaLineNumber::get_sourceFile Recupera una referencia al objeto de archivo de origen.Retrieves a reference to the source file object.
IDiaLineNumber::get_lineNumberIDiaLineNumber::get_lineNumber Recupera el número de línea en el archivo de origen.Retrieves the line number in the source file.
IDiaLineNumber::get_lineNumberEndIDiaLineNumber::get_lineNumberEnd Recupera el número de línea de origen basado en uno cuando finaliza la instrucción o expresión.Retrieves the one-based source line number where the statement or expression ends.
IDiaLineNumber::get_columnNumberIDiaLineNumber::get_columnNumber Recupera el número de columna donde comienza la expresión o instrucción.Retrieves the column number where the expression or statement begins.
IDiaLineNumber::get_columnNumberEndIDiaLineNumber::get_columnNumberEnd Recupera el número de columna donde finaliza la expresión o instrucción.Retrieves the column number where the expression or statement ends.
IDiaLineNumber::get_addressSectionIDiaLineNumber::get_addressSection Recupera el elemento de sección de la dirección de memoria donde se comienza un bloque.Retrieves the section part of the memory address where a block begins.
IDiaLineNumber::get_addressOffsetIDiaLineNumber::get_addressOffset Recupera la parte de la dirección de memoria donde se comienza un bloque de desplazamiento.Retrieves the offset part of the memory address where a block begins.
IDiaLineNumber::get_relativeVirtualAddressIDiaLineNumber::get_relativeVirtualAddress Recupera la imagen dirección virtual relativa (RVA) de un bloque.Retrieves the image relative virtual address (RVA) of a block.
IDiaLineNumber::get_virtualAddressIDiaLineNumber::get_virtualAddress Recupera la dirección virtual (VA) de un bloque.Retrieves the virtual address (VA) of a block.
IDiaLineNumber::get_lengthIDiaLineNumber::get_length Recupera el número de bytes en un bloque.Retrieves the number of bytes in a block.
IDiaLineNumber::get_sourceFileIdIDiaLineNumber::get_sourceFileId Recupera un identificador de archivo de origen único para el archivo de origen que han contribuido a esta línea.Retrieves a unique source file identifier for the source file that contributed this line.
IDiaLineNumber::get_statementIDiaLineNumber::get_statement Recupera una marca que indica que esta información de línea indica el principio de una instrucción en el código fuente del programa.Retrieves a flag indicating that this line information describes the beginning of a statement in the program source.
IDiaLineNumber::get_compilandIdIDiaLineNumber::get_compilandId Recupera el identificador único para la operación de compilación que han contribuido a esta línea.Retrieves the unique identifier for the compiland that contributed this line.

ComentariosRemarks

Notas para los llamadoresNotes for Callers

Obtener esta interfaz mediante una llamada a la idiaenumlinenumbers:: Item o idiaenumlinenumbers:: Next métodos.Obtain this interface by calling the IDiaEnumLineNumbers::Item or IDiaEnumLineNumbers::Next methods.

EjemploExample

La siguiente función muestra números de línea que se utiliza en una función (representado por pSymbol).The following function displays line numbers used in a function (represented by pSymbol).

void dumpFunctionLines( IDiaSymbol* pSymbol, IDiaSession* pSession )  
{  
    ULONGLONG length = 0;  
    DWORD     isect  = 0;  
    DWORD     offset = 0;  

    pSymbol->get_addressSection( &isect );  
    pSymbol->get_addressOffset( &offset );  
    pSymbol->get_length( &length );  
    if ( isect != 0 && length > 0 )  
    {  
        CComPtr< IDiaEnumLineNumbers > pLines;  
        if ( SUCCEEDED( pSession->findLinesByAddr(  
                                      isect,  
                                      offset,  
                                      static_cast<DWORD>( length ),  
                                      &pLines)  
                      )  
           )  
        {  
            CComPtr< IDiaLineNumber > pLine;  
            DWORD celt      = 0;  
            bool  firstLine = true;  

            while ( SUCCEEDED( pLines->Next( 1, &pLine, &celt ) ) &&  
                    celt == 1 )  
            {  
                DWORD offset;  
                DWORD seg;  
                DWORD linenum;  
                CComPtr< IDiaSymbol >     pComp;  
                CComPtr< IDiaSourceFile > pSrc;  

                pLine->get_compiland( &pComp );  
                pLine->get_sourceFile( &pSrc );  
                pLine->get_addressSection( &seg );  
                pLine->get_addressOffset( &offset );  
                pLine->get_lineNumber( &linenum );  
                printf( "\tline %d at 0x%x:0x%x\n", linenum, seg, offset );  
                pLine = NULL;  
                if ( firstLine )  
                {  
                    // sanity check  
                    CComPtr< IDiaEnumLineNumbers > pLinesByLineNum;  
                    if ( SUCCEEDED( pSession->findLinesByLinenum(  
                                                  pComp,  
                                                  pSrc,  
                                                  linenum,  
                                                  0,  
                                                  &pLinesByLineNum)  
                                  )  
                       )  
                    {  
                        CComPtr< IDiaLineNumber > pLine;  
                        DWORD celt;  
                        while ( SUCCEEDED( pLinesByLineNum->Next( 1, &pLine, &celt ) ) &&  
                                celt == 1 )  
                        {  
                            DWORD offset;  
                            DWORD seg;  
                            DWORD linenum;  

                            pLine->get_addressSection( &seg );  
                            pLine->get_addressOffset( &offset );  
                            pLine->get_lineNumber( &linenum );  
                            printf( "\t\tfound line %d at 0x%x:0x%x\n", linenum, seg, offset );  
                            pLine = NULL;  
                       }  
                    }  
                    firstLine = false;  
                }  
            }  
        }  
    }  
}  

RequisitosRequirements

Encabezado: Dia2.hHeader: Dia2.h

Biblioteca: diaguids.libLibrary: diaguids.lib

DLL: msdia80.dllDLL: msdia80.dll

Vea tambiénSee Also

Interfaces (Debug Interface Access SDK) Interfaces (Debug Interface Access SDK)
IDiaEnumLineNumbers IDiaEnumLineNumbers
Idiaenumlinenumbers:: Item IDiaEnumLineNumbers::Item
IDiaEnumLineNumbers::NextIDiaEnumLineNumbers::Next