SequencePoint Estrutura
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa um ponto de sequência PDB portátil.
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 exibir seus mapeamentos de linha 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));
}
}
}
Comentários
O ponto de sequência é uma estrutura que contém o mapeamento entre o deslocamento il e os números de linha e coluna correspondentes em um documento de origem do qual essa IL foi compilada. Os pontos de sequência são armazenados na MethodDebugInformation
tabela de símbolos de depuração PDB portáteis. Para obter mais informações, confira PDB portátil v1.0: especificação de formato.
Campos
HiddenLine |
Especifica um valor de número de linha para um ponto de sequência oculto. |
Propriedades
Document |
Obtém o documento de origem que contém esse ponto de sequência. |
EndColumn |
Obtém o número da coluna do último caractere neste ponto de sequência. |
EndLine |
Obtém o número de linha do último caractere neste ponto de sequência. |
IsHidden |
Obtém um valor que indica se esse ponto de sequência está oculto. |
Offset |
Obtém o deslocamento IL desse ponto de sequência desde o início do corpo do método, em bytes. |
StartColumn |
Obtém o número da coluna do primeiro caractere neste ponto de sequência. |
StartLine |
Obtém o número de linha do primeiro caractere neste ponto de sequência. |
Métodos
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 hash desse ponto de sequência. |