SequencePoint Structure
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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. |