SequencePoint Estrutura
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa um ponto de sequência Portable 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)
- Herança
- Implementações
Exemplos
Este exemplo mostra como ler pontos de sequência do método definido pelo token de metadados e mostrar os seus mapeamentos de linhas de origem:
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));
}
}
}
Observações
Ponto de sequência é uma estrutura que contém o mapeamento entre o deslocamento IL e os correspondentes números de linha e coluna num documento fonte a partir do qual este IL foi compilado. Os pontos de sequência são armazenados na MethodDebugInformation tabela dos símbolos de depuração do Portable PDB. Para obter mais informações, consulte PDB portátil v1.0: especificação de formato.
Campos
| Name | Description |
|---|---|
| HiddenLine |
Especifica um valor de número de linha para um ponto de sequência oculto. |
Propriedades
| Name | Description |
|---|---|
| Document |
Obtém o documento de origem que contém este ponto de sequência. |
| EndColumn |
Obtém o número da coluna do último carácter neste ponto de sequência. |
| EndLine |
Obtém o número da linha do último carácter neste ponto de sequência. |
| IsHidden |
Obtém um valor que indica se este ponto de sequência está oculto. |
| Offset |
Obtém o deslocamento IL deste ponto de sequência a partir do início do corpo do método, em bytes. |
| StartColumn |
Obtém o número da coluna do primeiro carácter neste ponto de sequência. |
| StartLine |
Obtém o número da linha do primeiro carácter neste ponto de sequência. |
Métodos
| Name | Description |
|---|---|
| Equals(Object) |
Indica se o ponto de sequência atual é igual ao objeto especificado. |
| Equals(SequencePoint) |
Indica se o objeto atual é igual a outro objeto do mesmo tipo. |
| GetHashCode() |
Obtém o código de hash deste ponto de sequência. |