SequencePoint Yapı
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Taşınabilir PDB sıra noktasını temsil eder.
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)
- Devralma
- Uygulamalar
Örnekler
Bu örnekte meta veri belirteci tarafından tanımlanan yöntemin sıra noktalarının nasıl okunduğu ve kaynak satır eşlemelerinin nasıl görüntüleneceği gösterilmektedir:
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));
}
}
}
Açıklamalar
Sıra noktası, IL uzaklığı ile bu IL'nin derlendiği kaynak belgedeki karşılık gelen satır ve sütun numaraları arasındaki eşlemeyi içeren bir yapıdır. Sıra noktaları Taşınabilir PDB hata ayıklama simgelerinin tablosunda depolanır MethodDebugInformation
. Daha fazla bilgi için bkz . Taşınabilir PDB v1.0: Biçim Belirtimi.
Alanlar
HiddenLine |
Gizli bir sıra noktası için bir satır numarası değeri belirtir. |
Özellikler
Document |
Bu sıra noktasını içeren kaynak belgeyi alır. |
EndColumn |
Bu dizi noktasındaki son karakterin sütun numarasını alır. |
EndLine |
Bu dizi noktasındaki son karakterin satır numarasını alır. |
IsHidden |
Bu sıra noktasının gizlenip gizlenmediğini gösteren bir değer alır. |
Offset |
Bu sıra noktasının IL uzaklığını yöntem gövdesinin başından bayt cinsinden alır. |
StartColumn |
Bu sıra noktasındaki ilk karakterin sütun numarasını alır. |
StartLine |
Bu dizi noktasındaki ilk karakterin satır numarasını alır. |
Yöntemler
Equals(Object) |
Geçerli sıra noktasının belirtilen nesneye eşit olup olmadığını gösterir. |
Equals(SequencePoint) |
Geçerli nesnenin aynı türdeki başka bir nesneye eşit olup olmadığını gösterir. |
GetHashCode() |
Bu dizi noktasının karma kodunu alır. |