SequencePoint Estrutura

Definição

Representa um ponto de sequência PDB portátil.

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 exibir seus mapeamentos de linha 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));
        }
    }
}

Comentários

O ponto de sequência é uma estrutura que contém o mapeamento entre o deslocamento il e os números de linha e coluna correspondentes em um documento de origem do qual essa IL foi compilada. Os pontos de sequência são armazenados na MethodDebugInformation tabela de símbolos de depuração PDB portáteis. Para obter mais informações, confira PDB portátil v1.0: especificação de formato.

Campos

HiddenLine

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

Propriedades

Document

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

EndColumn

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

EndLine

Obtém o número de linha do último caractere neste ponto de sequência.

IsHidden

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

Offset

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

StartColumn

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

StartLine

Obtém o número de linha do primeiro caractere neste ponto de sequência.

Métodos

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 hash desse ponto de sequência.

Aplica-se a