Open
Description
Part of #99298
This will require bringing up a basic data stream reader and registering enough data types and instances in the runtime so that we can get at the exception.
.NET 10
-
ISOSDacInterface9::GetBreakingChangeVersion
([cdac] Read/store globals from contract descriptor #101450) -
ISOSDacInterface::GetThreadStoreData()
([cdac] Implement GetThreadStoreData in cDAC #102404) -
ISOSDacInterface::GetThreadData()
([cdac] Implement ISOSDacInterface.GetThreadData #103324) -
ISOSDacInterface::GetNestedExceptionData()
([cdac] Implement ISOSDacInterface::GetNestedExceptionData #103668) - Cleanup uses of
PEAssembly
in the SOS DAC APIs - return/consume (including inDacpModuleData
) pointers to aModule
instead, and avoid exposing PEAssembly in the cDAC contracts. (Make DAC return Module instead of PEAssembly for DacpModuleData::PEAssembly #103821, Remove printing of DacpModuleData::PEAssembly from DumpModule command diagnostics#4751) -
ISOSDacInterface::GetMethodTableData()
([cdac] start of RuntimeTypeSystem contract; implement GetMethodTableData SOS method #103444) -
ISOSDacInterface::GetModuleData()
([cdac] Start Loader contract and implement ISOSDacInterface::GetModuleData in cDAC #104257) -
ISOSDacInterface2::GetObjectExceptionData()
(* This is where the stack trace comes from - uses the stack trace array on the exception object) ([cdac] Implement ISOSDacInterface2::GetObjectExceptionData #104343) -
ISOSDacInterface::GetObjectData()
-
ISOSDacInterface::GetObjectStringData()
([cdac] Implement GetObjectStringData #105061) -
ISOSDacInterface::GetMethodDescData()
- [cdac] Begin adding MethodDesc APIs to the RuntimeTypeSystem contract #104811
- [cdac] ExecutionManager contract and RangeSectionMap lookup unit tests #108685
- [cdac] CodeVersions contract and tests #109021
- [cdac] PrecodeStubs and CDacMetadata contracts #109030
- [cdac] Basic ISOSDacInterface::GetMethodDescData #106413
- [cdac] GetMethodDescData for jitted methods #109187
- [cdac] Finish unimplemented parts of GetMethodDescData #109426
-
ISOSDacInterface::GetMethodTableName()
- big, traverses a lot of metadata (cDac work necessary to get the MethodTableName #104759) -
ISOSDacInterface::GetMethodDescName()
- big, traverses a lot of metadata (Implementation of SOSDacApi GetMethodDescName for cDAC #106169) -
ISOSDacInterface::GetPEFileName()
-
ISOSDacInterface::GetUsefulGlobals()
([cdac] Implement ISOSDacInterface::GetUsefulGlobals #105106)
- Module name fallback if debugger and GetPEFileName() can't get the name
-
ISOSDacInterface::GetModule()
([cdac] ImplementISOSDacInterface::GetModule
andIXCLRDataModule::GetFileName
#109133) -
IXCLRDataModule::GetFileName()
([cdac] ImplementISOSDacInterface::GetModule
andIXCLRDataModule::GetFileName
#109133)
Additionally see sos_printexception_walkthrough.md#exception-informaiton for a walkthrough of the relationship of these interfaces to what SOS is doing
For CLRMA, we will need a few additional methods:
https://github.com/dotnet/diagnostics/blob/main/documentation/clrma.md#dac-interfaces-used-by-clrma
.NET 9
We maintain a branch feature/9.0-cdac-backports
that has selected data descriptor and contract changes necessary for the cdacreader to interrogate a net9.0 runtime. The backports to this branch include: