SequencePoint Struktura
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje přenosný bod sekvence PDB.
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)
- Dědičnost
- Implementuje
Příklady
Tento příklad ukazuje, jak načíst body sekvence metody definované tokenem metadat a zobrazit mapování zdrojových řádků:
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));
}
}
}
Poznámky
Bod sekvence je struktura, která obsahuje mapování mezi posunem il a odpovídajícími čísly řádků a sloupců ve zdrojovém dokumentu, ze kterého byl il kompilován. Sekvenční body jsou uloženy MethodDebugInformation
v tabulce přenosných symbolů ladění PDB. Další informace najdete v tématu Portable PDB v1.0: Specifikace formátu.
Pole
HiddenLine |
Určuje hodnotu čísla řádku pro skrytý bod sekvence. |
Vlastnosti
Document |
Získá zdrojový dokument, který obsahuje tento bod sekvence. |
EndColumn |
Získá číslo sloupce poslední znak v tomto bodě sekvence. |
EndLine |
Získá číslo řádku poslední znak v tomto bodě sekvence. |
IsHidden |
Získá hodnotu, která označuje, zda je tento bod sekvence skrytý. |
Offset |
Získá posun IL tohoto bodu sekvence od začátku těla metody v bajtech. |
StartColumn |
Získá číslo sloupce prvního znaku v tomto bodě sekvence. |
StartLine |
Získá číslo řádku prvního znaku v tomto bodě sekvence. |
Metody
Equals(Object) |
Určuje, zda je aktuální bod sekvence roven zadanému objektu. |
Equals(SequencePoint) |
Určuje, zda je aktuální objekt roven jinému objektu stejného typu. |
GetHashCode() |
Získá kód hash tohoto bodu sekvence. |