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ý sekvenční bod 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 číst sekvenční body 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
Sekvenční bod 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 v MethodDebugInformation
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 sekvenční bod. |
EndColumn |
Získá číslo sloupce posledního znaku v tomto pořadovém bodu. |
EndLine |
Získá číslo řádku posledního znaku v tomto sekvenčním bodu. |
IsHidden |
Získá hodnotu, která označuje, zda je tento sekvenční bod skrytý. |
Offset |
Získá posun IL tohoto sekvenčního bodu od začátku těla metody v bajtech. |
StartColumn |
Získá číslo sloupce prvního znaku v tomto sekvenčním bodu. |
StartLine |
Získá číslo řádku prvního znaku v tomto pořadovém bodu. |
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á hash kód tohoto sekvenčního bodu. |
Platí pro
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro