Partage via


SequencePoint Structure

Définition

Représente un point de séquence PDB portable.

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)
Héritage
SequencePoint
Implémente

Exemples

Cet exemple montre comment lire les points de séquence de la méthode définie par le jeton de métadonnées et afficher ses mappages de ligne source :

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

Remarques

Le point de séquence est une structure qui contient le mappage entre le décalage IL et les numéros de ligne et de colonne correspondants dans un document source à partir duquel cet il a été compilé. Les points de séquence sont stockés dans la MethodDebugInformation table des symboles de débogage PDB portables. Pour plus d’informations, consultez Portable PDB v1.0 : Spécification de format.

Champs

HiddenLine

Spécifie une valeur de numéro de ligne pour un point de séquence masqué.

Propriétés

Document

Obtient le document source qui contient ce point de séquence.

EndColumn

Obtient le numéro de colonne du dernier caractère de ce point de séquence.

EndLine

Obtient le numéro de ligne du dernier caractère de ce point de séquence.

IsHidden

Obtient une valeur qui indique si ce point de séquence est masqué.

Offset

Obtient le décalage IL de ce point de séquence à partir du début du corps de la méthode, en octets.

StartColumn

Obtient le numéro de colonne du premier caractère de ce point de séquence.

StartLine

Obtient le numéro de ligne du premier caractère de ce point de séquence.

Méthodes

Equals(Object)

Indique si le point de séquence actuel est égal à l’objet spécifié.

Equals(SequencePoint)

Indique si l'objet actuel est égal à un autre objet du même type.

GetHashCode()

Obtient le code de hachage de ce point de séquence.

S’applique à