다음을 통해 공유


IDiaLineNumber

액세스 정보 매핑할 바이트의 이미지 텍스트 블록을 소스 파일 줄 번호를 사용 하는 프로세스입니다.

IDiaLineNumber : IUnknown

메서드에서 Vtable 순서

다음 표에서 메서드를 IDiaLineNumber.

메서드

설명

IDiaLineNumber::get_compiland

멤버의 이미지 텍스트 바이트 컴파일 대상에 대 한 기호에 대 한 참조를 검색 합니다.

IDiaLineNumber::get_sourceFile

원본 파일 개체 참조를 검색합니다.

IDiaLineNumber::get_lineNumber

소스 파일의 줄 번호를 검색합니다.

IDiaLineNumber::get_lineNumberEnd

문 또는 식을 끝나는 1 소스 줄 번호를 검색 합니다.

IDiaLineNumber::get_columnNumber

식 또는 문 시작 되는 위치는 열 번호를 검색 합니다.

IDiaLineNumber::get_columnNumberEnd

식 또는 문 끝나는 열 번호를 검색 합니다.

IDiaLineNumber::get_addressSection

메모리 주소 블록 시작 되는 위치 섹션 부분을 검색 합니다.

IDiaLineNumber::get_addressOffset

오프셋된 부분의 시작 되는 위치는 블록의 메모리 주소를 검색 합니다.

IDiaLineNumber::get_relativeVirtualAddress

이미지 상대 가상 주소 (RVA) 블록을 검색합니다.

IDiaLineNumber::get_virtualAddress

가상 주소 (VA) 블록을 검색합니다.

IDiaLineNumber::get_length

블록의 바이트 수를 검색합니다.

IDiaLineNumber::get_sourceFileId

소스 파일에이 줄 멤버에 고유한 소스 파일 식별자를 검색 합니다.

IDiaLineNumber::get_statement

이 줄 정보 프로그램 소스에서 문 시작 부분에 설명 합니다 나타내는 플래그를 검색 합니다.

IDiaLineNumber::get_compilandId

이 줄 멤버 컴파일 대상에 대 한 고유 식별자를 검색 합니다.

설명

호출자에 대 한 참고 사항

이 인터페이스를 호출 하 여 얻을 IDiaEnumLineNumbers::Item 또는 IDiaEnumLineNumbers::Next 방법입니다.

예제

다음 함수는 함수에 사용 되는 줄 번호를 표시 합니다. (표시 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;
                }
            }
        }
    }
}

요구 사항

헤더: Dia2.h

라이브러리: diaguids.lib

DLL: msdia80.dll

참고 항목

참조

IDiaEnumLineNumbers

IDiaEnumLineNumbers::Item

IDiaEnumLineNumbers::Next

기타 리소스

인터페이스(디버그 인터페이스 액세스 SDK)