Compartir a través de


SequencePoint Estructura

Definición

Representa un punto de secuencia 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)
Herencia
SequencePoint
Implementaciones

Ejemplos

En este ejemplo se muestra cómo leer los puntos de secuencia del método definido por el token de metadatos y mostrar sus asignaciones de líneas de origen:

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

Comentarios

El punto de secuencia es una estructura que contiene la asignación entre el desplazamiento il y los números de línea y columna correspondientes en un documento de origen desde el que se compiló este IL. Los puntos de secuencia se almacenan en la MethodDebugInformation tabla de símbolos de depuración de PDB portable. Para más información, consulte el artículo sobre la especificación del formato PDB portable v1.0.

Campos

HiddenLine

Especifica un valor de número de línea para un punto de secuencia oculto.

Propiedades

Document

Obtiene el documento de origen que contiene este punto de secuencia.

EndColumn

Obtiene el número de columna del último carácter de este punto de secuencia.

EndLine

Obtiene el número de línea del último carácter de este punto de secuencia.

IsHidden

Obtiene un valor que indica si este punto de secuencia está oculto.

Offset

Obtiene el desplazamiento il de este punto de secuencia desde el principio del cuerpo del método, en bytes.

StartColumn

Obtiene el número de columna del primer carácter de este punto de secuencia.

StartLine

Obtiene el número de línea del primer carácter de este punto de secuencia.

Métodos

Equals(Object)

Indica si el punto de secuencia actual es igual al objeto especificado.

Equals(SequencePoint)

Indica si el objeto actual es igual que otro objeto del mismo tipo.

GetHashCode()

Obtiene el código hash de este punto de secuencia.

Se aplica a