You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Portable PDBs may have CustomDebugInformation on many metadata
entities (see HasCustomDebugInformation in
https://github.com/dotnet/runtime/blob/main/docs/design/specs/PortablePdb-Metadata.md#customdebuginformation-table-0x37).
For a select few of the CustomDebugInformation kinds (for example
state machine hoisted local scopes), cecil has dedicated types to
represent these in the object model. For the rest, cecil just reads
the custom debug info out of the blob heap as a `byte[]`.
When writing back a module, cecil walks the metadata as represented in
its object model, building the debug information as it goes.
So to support custom debug information for a new metadata token type:
- the corresponding cecil type should be made to implement
`ICustomDebugInformationProvider`,
- the backing data for these getters should be populated on-demand,
and also by the top-down walk in the immediate module reader, and
- the top-down walk of metadata for writing should visit the cecil
object and write its debug information.
This change implements the above for `TypeDefinition`. It extends the
`ISymbolReader`/`ISymbolWriter` interfaces with a new method for
reading/writing custom debug info for any
`ICustomDebugInformationProvider`, and provides helpers for calling
the symbol reader that can be used when adding custom debug
information to other types in the future.
It doesn't include support for decoding the `TypeDefinitionDocument`
debug info - it continues representing these as
`BinaryCustomDebugInformation`.
---------
Co-authored-by: Jackson Schuster <36744439+jtschuster@users.noreply.github.com>
Co-authored-by: Andy Gocke <angocke@microsoft.com>
0 commit comments