SequencePoint 構造体
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
ポータブル 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)
- 継承
- 実装
例
この例では、メタデータ トークンによって定義された メソッドのシーケンス ポイントを読み取り、そのソース行マッピングを表示する方法を示します。
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));
}
}
}
注釈
シーケンス ポイントは、IL オフセットと、この IL がコンパイルされたソース ドキュメント内の対応する行番号と列番号の間のマッピングを含む構造体です。 シーケンス ポイントは、ポータブル PDB デバッグ シンボルのテーブルに格納されます MethodDebugInformation
。 詳細については、「Portable PDB v1.0:書式指定。
フィールド
HiddenLine |
非表示のシーケンス ポイントの行番号の値を指定します。 |
プロパティ
Document |
このシーケンス ポイントを含むソース ドキュメントを取得します。 |
EndColumn |
このシーケンス ポイントの最後の文字の列番号を取得します。 |
EndLine |
このシーケンス ポイントの最後の文字の行番号を取得します。 |
IsHidden |
このシーケンス ポイントが非表示かどうかを示す値を取得します。 |
Offset |
メソッド本体の先頭から、このシーケンス ポイントの IL オフセットをバイト単位で取得します。 |
StartColumn |
このシーケンス ポイントの最初の文字の列番号を取得します。 |
StartLine |
このシーケンス ポイントの最初の文字の行番号を取得します。 |
メソッド
Equals(Object) |
現在のシーケンス ポイントが指定したオブジェクトと等しいかどうかを示します。 |
Equals(SequencePoint) |
現在のオブジェクトが、同じ型の別のオブジェクトと等しいかどうかを示します。 |
GetHashCode() |
このシーケンス ポイントのハッシュ コードを取得します。 |
適用対象
.NET