SequencePoint Struct-datatyp

Definition

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
SequencePoint
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.

Gäller för