SequencePoint Struktur
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Stellt einen portablen PDB-Sequenzpunkt dar.
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)
- Vererbung
- Implementiert
Beispiele
In diesem Beispiel wird gezeigt, wie Sequenzpunkte der vom Metadatentoken definierten Methode gelesen und die Quellzeilenzuordnungen angezeigt werden:
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));
}
}
}
Hinweise
Sequenzpunkt ist eine Struktur, die die Zuordnung zwischen IL-Offset und entsprechenden Zeilen- und Spaltennummern in einem Quelldokument enthält, aus dem diese IL kompiliert wurde. Sequenzpunkte werden in der MethodDebugInformation
Tabelle der Portable PDB-Debugsymbole gespeichert. Weitere Informationen finden Sie unter Portierbares PDB v1.0: Formatspezifikation.
Felder
HiddenLine |
Gibt einen Zeilennummerwert für einen ausgeblendeten Sequenzpunkt an. |
Eigenschaften
Document |
Ruft das Quelldokument ab, das diesen Sequenzpunkt enthält. |
EndColumn |
Ruft die Spaltennummer des letzten Zeichens in diesem Sequenzpunkt ab. |
EndLine |
Ruft die Zeilennummer des letzten Zeichens in diesem Sequenzpunkt ab. |
IsHidden |
Ruft einen Wert ab, der angibt, ob dieser Sequenzpunkt ausgeblendet ist. |
Offset |
Ruft den IL-Offset dieses Sequenzpunkts vom Anfang des Methodentexts in Bytes ab. |
StartColumn |
Ruft die Spaltennummer des ersten Zeichens in diesem Sequenzpunkt ab. |
StartLine |
Ruft die Zeilennummer des ersten Zeichens in diesem Sequenzpunkt ab. |
Methoden
Equals(Object) |
Gibt an, ob der aktuelle Sequenzpunkt dem angegebenen Objekt entspricht. |
Equals(SequencePoint) |
Gibt an, ob das aktuelle Objekt gleich einem anderen Objekt des gleichen Typs ist. |
GetHashCode() |
Ruft den Hashcode dieses Sequenzpunkts ab. |