Aracılığıyla paylaş


SequencePoint Yapı

Tanım

Taşınabilir PDB sıra noktasını temsil eder.

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)
Devralma
SequencePoint
Uygulamalar

Örnekler

Bu örnekte meta veri belirteci tarafından tanımlanan yöntemin sıra noktalarının nasıl okunduğu ve kaynak satır eşlemelerinin nasıl görüntüleneceği gösterilmektedir:

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));
        }
    }
}

Açıklamalar

Sıra noktası, IL uzaklığı ile bu IL'nin derlendiği kaynak belgedeki karşılık gelen satır ve sütun numaraları arasındaki eşlemeyi içeren bir yapıdır. Sıra noktaları Taşınabilir PDB hata ayıklama simgelerinin tablosunda depolanır MethodDebugInformation . Daha fazla bilgi için bkz . Taşınabilir PDB v1.0: Biçim Belirtimi.

Alanlar

HiddenLine

Gizli bir sıra noktası için bir satır numarası değeri belirtir.

Özellikler

Document

Bu sıra noktasını içeren kaynak belgeyi alır.

EndColumn

Bu dizi noktasındaki son karakterin sütun numarasını alır.

EndLine

Bu dizi noktasındaki son karakterin satır numarasını alır.

IsHidden

Bu sıra noktasının gizlenip gizlenmediğini gösteren bir değer alır.

Offset

Bu sıra noktasının IL uzaklığını yöntem gövdesinin başından bayt cinsinden alır.

StartColumn

Bu sıra noktasındaki ilk karakterin sütun numarasını alır.

StartLine

Bu dizi noktasındaki ilk karakterin satır numarasını alır.

Yöntemler

Equals(Object)

Geçerli sıra noktasının belirtilen nesneye eşit olup olmadığını gösterir.

Equals(SequencePoint)

Geçerli nesnenin aynı türdeki başka bir nesneye eşit olup olmadığını gösterir.

GetHashCode()

Bu dizi noktasının karma kodunu alır.

Şunlara uygulanır