Bagikan melalui


SequencePoint Struktur

Definisi

Mewakili titik urutan PDB Portabel.

public value class SequencePoint : IEquatable<System::Reflection::Metadata::SequencePoint>
public readonly struct SequencePoint : IEquatable<System.Reflection.Metadata.SequencePoint>
public struct SequencePoint : IEquatable<System.Reflection.Metadata.SequencePoint>
type SequencePoint = struct
Public Structure SequencePoint
Implements IEquatable(Of SequencePoint)
Warisan
SequencePoint
Penerapan

Contoh

Contoh ini menunjukkan cara membaca titik urutan metode yang ditentukan oleh token metadata dan menampilkan pemetaan baris sumbernya:

public static void ReadSourceLineData(string pdbPath, int methodToken)
{
    // Determine method row number
    EntityHandle ehMethod = MetadataTokens.EntityHandle(methodToken);

    if (ehMethod.Kind != HandleKind.MethodDefinition)
    {
        Console.WriteLine($"Invalid token kind: {ehMethod.Kind}");
        return;
    }

    int rowNumber = MetadataTokens.GetRowNumber(ehMethod);

    // MethodDebugInformation table is indexed by same row numbers as MethodDefinition table
    MethodDebugInformationHandle hDebug = MetadataTokens.MethodDebugInformationHandle(rowNumber);

    // Open Portable PDB file
    using var fs = new FileStream(pdbPath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
    using MetadataReaderProvider provider = MetadataReaderProvider.FromPortablePdbStream(fs);
    MetadataReader reader = provider.GetMetadataReader();

    if (rowNumber > reader.MethodDebugInformation.Count)
    {
        Console.WriteLine("Error: Method row number is out of range");
        return;
    }

    // Print source line information as console table
    MethodDebugInformation di = reader.GetMethodDebugInformation(hDebug);
    Console.WriteLine("IL offset | Start line | Start col. | End line | End col. |");

    foreach (SequencePoint sp in di.GetSequencePoints())
    {
        if (sp.IsHidden)
        {
            Console.WriteLine($"{sp.Offset.ToString().PadLeft(9)} | (hidden sequence point)");
        }
        else
        {
            Console.WriteLine("{0} |{1} |{2} |{3} |{4} |", 
                sp.Offset.ToString().PadLeft(9), 
                sp.StartLine.ToString().PadLeft(11),
                sp.StartColumn.ToString().PadLeft(11),
                sp.EndLine.ToString().PadLeft(9),
                sp.EndColumn.ToString().PadLeft(9));
        }
    }
}

Keterangan

Titik urutan adalah struktur yang berisi pemetaan antara offset IL dan nomor baris dan kolom terkait dalam dokumen sumber tempat IL ini dikompilasi. Titik urutan disimpan dalam MethodDebugInformation tabel simbol debugging PDB Portabel. Untuk informasi selengkapnya, lihat PDB portabel v1.0: Spesifikasi Format.

Bidang

HiddenLine

Menentukan nilai nomor baris untuk titik urutan tersembunyi.

Properti

Document

Mendapatkan dokumen sumber yang berisi titik urutan ini.

EndColumn

Mendapatkan nomor kolom karakter terakhir dalam titik urutan ini.

EndLine

Mendapatkan nomor baris karakter terakhir dalam titik urutan ini.

IsHidden

Mendapatkan nilai yang menunjukkan apakah titik urutan ini disembunyikan.

Offset

Mendapatkan offset IL dari titik urutan ini dari awal isi metode, dalam byte.

StartColumn

Mendapatkan nomor kolom karakter pertama dalam titik urutan ini.

StartLine

Mendapatkan nomor baris karakter pertama dalam titik urutan ini.

Metode

Equals(Object)

Menunjukkan apakah titik urutan saat ini sama dengan objek yang ditentukan.

Equals(SequencePoint)

Menunjukkan apakah objek saat ini sama dengan objek lain dengan jenis yang sama.

GetHashCode()

Mendapatkan kode hash dari titik urutan ini.

Berlaku untuk