SequencePoint Estrutura

Definição

Representa um ponto de sequência Portable PDB.

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)
Herança
SequencePoint
Implementações

Exemplos

Este exemplo mostra como ler pontos de sequência do método definido pelo token de metadados e mostrar os seus mapeamentos de linhas de origem:

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

Observações

Ponto de sequência é uma estrutura que contém o mapeamento entre o deslocamento IL e os correspondentes números de linha e coluna num documento fonte a partir do qual este IL foi compilado. Os pontos de sequência são armazenados na MethodDebugInformation tabela dos símbolos de depuração do Portable PDB. Para obter mais informações, consulte PDB portátil v1.0: especificação de formato.

Campos

Name Description
HiddenLine

Especifica um valor de número de linha para um ponto de sequência oculto.

Propriedades

Name Description
Document

Obtém o documento de origem que contém este ponto de sequência.

EndColumn

Obtém o número da coluna do último carácter neste ponto de sequência.

EndLine

Obtém o número da linha do último carácter neste ponto de sequência.

IsHidden

Obtém um valor que indica se este ponto de sequência está oculto.

Offset

Obtém o deslocamento IL deste ponto de sequência a partir do início do corpo do método, em bytes.

StartColumn

Obtém o número da coluna do primeiro carácter neste ponto de sequência.

StartLine

Obtém o número da linha do primeiro carácter neste ponto de sequência.

Métodos

Name Description
Equals(Object)

Indica se o ponto de sequência atual é igual ao objeto especificado.

Equals(SequencePoint)

Indica se o objeto atual é igual a outro objeto do mesmo tipo.

GetHashCode()

Obtém o código de hash deste ponto de sequência.

Aplica-se a