SequencePoint Struct-datatyp
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar en bärbar PDB-sekvenspunkt.
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)
- Arv
- Implementeringar
Exempel
Det här exemplet visar hur du läser sekvenspunkter för metoden som definierats av metadatatoken och visar dess källradsmappningar:
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));
}
}
}
Kommentarer
Sekvenspunkt är en struktur som innehåller mappningen mellan IL-förskjutning och motsvarande rad- och kolumnnummer i ett källdokument som il:en kompilerades från. Sekvenspunkter lagras i tabellen MethodDebugInformation med portable PDB-felsökningssymboler. Mer information finns i Bärbar PDB v1.0: Formatspecifikation.
Fält
| Name | Description |
|---|---|
| HiddenLine |
Anger ett radnummervärde för en dold sekvenspunkt. |
Egenskaper
| Name | Description |
|---|---|
| Document |
Hämtar källdokumentet som innehåller den här sekvenspunkten. |
| EndColumn |
Hämtar kolumnnumret för det sista tecknet i den här sekvenspunkten. |
| EndLine |
Hämtar radnumret för det sista tecknet i den här sekvenspunkten. |
| IsHidden |
Hämtar ett värde som anger om den här sekvenspunkten är dold. |
| Offset |
Hämtar IL-förskjutningen för den här sekvenspunkten från början av metodtexten i byte. |
| StartColumn |
Hämtar kolumnnumret för det första tecknet i den här sekvenspunkten. |
| StartLine |
Hämtar radnumret för det första tecknet i den här sekvenspunkten. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Anger om den aktuella sekvenspunkten är lika med det angivna objektet. |
| Equals(SequencePoint) |
Anger om det aktuella objektet är lika med ett annat objekt av samma typ. |
| GetHashCode() |
Hämtar hash-koden för den här sekvenspunkten. |