SequencePoint Estructura
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
- 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. |