IDiaLineNumber
存取告訴您,從對應的圖像文字的位元組區塊至來源檔案的行數的程序的資訊。
IDiaLineNumber : IUnknown
方法 Vtable 順序
下表顯示的方法IDiaLineNumber。
方法 |
描述 |
---|---|
擷取的貢獻圖像文字的位元組的編譯符號的參考。 |
|
擷取來源的檔案物件的參考。 |
|
擷取原始程式檔中的行號。 |
|
擷取一為基礎的來源行號結束的陳述式或運算式。 |
|
擷取運算式或陳述式的開始處的資料行數目。 |
|
擷取運算式或陳述式的結束處的資料行數目。 |
|
擷取區塊的開始處的記憶體位址中區段的一部份。 |
|
擷取一個區塊的開始處的記憶體位址的位移的部分。 |
|
擷取的映像相對虛擬位址 (RVA) 的區塊。 |
|
擷取一個區塊的虛擬位址 (VA)。 |
|
擷取區塊中的位元組的數目。 |
|
擷取貢獻此行的原始程式檔的唯一來源檔案識別碼。 |
|
會擷取旗標,表示這個行資訊說明程式原始碼中的陳述式的開頭。 |
|
擷取貢獻此行的編譯的唯一識別項。 |
備註
呼叫者的備忘稿
取得這個介面,藉由呼叫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